윈도우 리스너에 이벤트 리스너를 연결하려고합니다. 그런 다음 나중에 스크립트에서 document.write가 사용됩니다. (나는 악의가있다. 나는 그 문제에 대해 선택의 여지가 없다.) 문제는, document.write가 청취자를 지워 버린다는 것이다. 그것을 피할 수 있습니까? 수 없습니다 http://jsfiddle.net/Fuhzu/document.write에서 생존하는 JS 이벤트 리스너를 어떻게 만듭니 까?
답변
:
다음은 문제를 보여 바이올린입니다.document.write
은 현재 문서를 언로드하고 새 문서를 만듭니다.
데모는 확인 : http://jsfiddle.net/Gk3cX/이
window.test = document; //Cache document
document.write('<button onclick="alert(window.test===document)">CLick</button>');
// Clicking shows false! The document has changed!
하역하지 않고 현재 문서를 덮어 쓰기에 대한 귀하의 유일한 선택 innerHTML
입니다 :
document.body.innerHTML = "Overwritten document's content, kept events.";
내가 찾은 주위에 작업을 간단하게 다시하다 document.write 뒤에 리스너를 연결하십시오.
업데이트 : Doh!
업데이트 .... 2 내가 document.writing 전에 핸들러를 unattach 경우 어쩌면
attempt to run compile-and-go script on a cleared scope
: 그건 크롬에서 작동하지만, FF에서 오류가 발생 아니 : http://jsfiddle.net/sprugman/KzNbX/1/
어쨌든 document.write
을 자신의 기능으로 바꾸면 페이지가 삭제되지 않습니다. 이 같은
뭔가 :
document.write = function(str){
document.body.innerHTML = str;
};
아니면 전체 페이지를 삭제하지 않으려면 :
document.write = function(str){
document.body.innerHTML += str;
};
DEMO : http://jsfiddle.net/Fuhzu/1/
스크립트가 더 많은 스크립트를 호출하는 광고 체인의 일부인 경우보다 쉽게 처리 할 수 있습니다.이 스크립트에는 document.write가 있거나 없을 수 있습니다. – sprugman
@sprugman : 스크립트를 실행하기 전에 페이지 상단에 이것을 선언하면 어떨까요? –
페이지를 제어 할 권한이 없습니다. 저는 다른 사람들이 자신의 페이지에 삽입하는 스크립트를 만들고 있습니다. 가능한 많은 embedding 상황이 있으므로, document.write를 덮어 쓰면 내 지식없이 쉽게 무언가가 깨질 수 있습니다. – sprugman
나는 문서와이 시도하지 않은 .write,하지만 도움이 될 수도 있습니다. http://api.jquery.com/live/
Attach an event handler for all elements which match the current selector, now and in the future
작동하지 않는 것 같습니다. http://jsfiddle.net/Fuhzu/2/ = ( –
- 1. 이벤트 구독자는 어떻게 만듭니 까?
- 2. Ext JS Grid에서 태그가있는 텍스트 필드는 어떻게 만듭니 까?
- 3. 사전 항목은 어떻게 만듭니 까?
- 4. 새 ForwardingCache는 어떻게 만듭니 까?
- 5. Perl 클래스는 어떻게 만듭니 까?
- 6. Catalyst에서 세션을 어떻게 만듭니 까?
- 7. 게임 바닥을 어떻게 만듭니 까?
- 8. .wsgi 파일은 어떻게 만듭니 까?
- 9. 바이너리 패치는 어떻게 만듭니 까?
- 10. 페이지 템플리트는 어떻게 만듭니 까?
- 11. 싱글턴 IEnumerable은 어떻게 만듭니 까?
- 12. 이 RouteData는 어떻게 만듭니 까?
- 13. Monotouch에서 글꼴을 어떻게 만듭니 까?
- 14. 컨테이너 파일은 어떻게 만듭니 까?
- 15. EDM에서 데이터베이스를 어떻게 만듭니 까?
- 16. 자식 NSManagedObjectContext를 어떻게 만듭니 까?
- 17. 소셜 그래프는 어떻게 만듭니 까?
- 18. JSON Array는 어떻게 만듭니 까?
- 19. 빈 op_array는 어떻게 만듭니 까?
- 20. gitosis에서 머리를 어떻게 만듭니 까?
- 21. 모바일 사이트는 어떻게 만듭니 까?
- 22. 포인터의 배열은 어떻게 만듭니 까?
- 23. RSS 피드는 어떻게 만듭니 까?
- 24. 동적 URL은 어떻게 만듭니 까?
- 25. UISplitView를 수동으로 어떻게 만듭니 까?
- 26. 어떻게 OnClickListener 인스턴스를 만듭니 까?
- 27. CruiseControl.Net에서 속성을 어떻게 만듭니 까?
- 28. 제한된 AppDomain은 어떻게 만듭니 까?
- 29. 지도 아이콘은 어떻게 만듭니 까?
- 30. configure 스크립트는 어떻게 만듭니 까?
선택하지 않았습니까? div id = me를 사용할 수 없습니다. me.innerHTML = "hah"? 아니면 hah = document.createElement (span) me.appendChild (hah)? –
아니요 - 다른 기존 코드로 작업해야합니다. 그것은 언젠가는 바뀔 수 있지만 즉시 변할 수는 없습니다. – sprugman