Greasemonkey와 버전 4로 업그레이드 한 후 나는 비슷한 문제로 실행,하지만 난 대신
addEventListener("DOMContentLoaded", function(){
// …
});
을 사용했다.
내 사용자 스크립트를 해결하기 위해 노력
, 나는 처음에 그 래퍼 주석과
metadata block에
// @run-at document-end
을 넣어. 이 방법을 통해 DOM이 준비되었고 원래 DOMContentLoaded
래퍼 내에 있던 코드가 올바르게 실행되도록했습니다.
그러나 실제로 페이지 스크립트가 및을 실행하기 전에 JavaScript를 실행해야하는 내 사용자 스크립트 중 두 개가 DOM 준비가되었을 때 다른 코드를 실행하는 데는 효과적이었습니다. 이제 당신이 필요이 작업을하기 위해 DOMContentLoaded
래퍼 위해서는 메타 데이터 블록에
// @run-at document-start
을 넣어 것으로 밝혀 당신의 window
(또는 document
).
이전 버전의 GreaseMonkey에서는 이것을 생략하고 정상적으로 실행할 수있었습니다.
그러나 GreaseSpot Wiki에 따르면 document-start
은 추가 기능의 WebExtensions 다시 쓰기에서 비동기 실행 또는 누락 된 기능으로 인해 GreaseMonkey 4.0에서 작동하지 않을 수 있습니다.
또한, document.readyState
은 document-start
와 "loading"
하지만 "interactive"
document-end
와 비슷하게 // @run-at
전혀 될 것입니다.
'@ run-at document-end'을 사용해 보셨습니까? – peterh