문제

"받은 편지함"링크 사본을 만들어야하는 Gmail 용 Greasemonkey 스크립트를 작업 중입니다. Clonenode를 사용하면 괜찮지 만 런타임에 연결되는 Onclick 이벤트가 있다고 생각합니다. 그래서 이것은 두 가지 부분 질문입니다. 1. 노드에 어떤 이벤트가 첨부되어 있는지 확인할 수있는 방법이 있습니까? 2. 이러한 이벤트를 복사 할 수있는 방법이 있습니까? 내가 찾은 가장 가까운 것은 jQuery 였고, 나는 아직 거기에 갈 준비가되지 않았습니다. 감사!

도움이 되었습니까?

해결책

  1. 사용을 설정하지 않는 한 아닙니다 onclick 요소의 속성.
  2. 확실하게는 아닙니다 (복사 할 수 있습니다 onclick 속성이지만 계속 작동하는지 여부는 사용되었는지 여부와 그 일에 따라 다릅니다).

당신은 당신 자신을 추가하는 것이 좋습니다 click 핸들러, 원본에서 해당 이벤트를 트리거하거나 다른 방식으로 동작을 시뮬레이션합니다.

다른 팁

이 이론을 사용 하여이 내용을 해결할 수 있다고 생각합니다.

우리는 JS에도 Livelists라고도하는 Nodelist를 가지고 있습니다. 길이가 변경 될 때마다 확인할 수 있으며 원하는 일반적인 이벤트를 (길이 -1)의 목록의 새로운 요소에 추가합니다.

말하는 것 ....

다음은 이벤트 추가에 Nodelist를 사용하는 예입니다.

<body>
        <div id="one" class="clones" style="background:red;width:100px;height:100px"></div>
    </body>

    <script>

        //Selecor based live list [Advantage]
        var nodeList = document.getElementsByClassName('clones')

        //Common Function for nodelist
        nodeList.addEvents = function(){
            nodeList.item(nodeList.length-1).addEventListener('click',function(){
                    console.log(this.id);
            });
        }
        nodeList.addEvents();

        //Making Clone
        var _clone  =  document.getElementsByTagName('div')[0].cloneNode(true);

        //Changing Id
        _clone.id="two"

        document.body.appendChild(_clone);
        nodeList.addEvents();
    </script>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top