のGreaseMonkeyがバージョン4にアップグレードした後、私は同様の問題に走ったが、私が代わりに
addEventListener("DOMContentLoaded", function(){
// …
});
を使用。私のユーザースクリプトを修正しようとすると
、私は当初、そのラッパーをコメントアウトし、metadata blockで
// @run-at document-end
を置きます。このようにして、私はDOMが準備できて、元々DOMContentLoaded
ラッパーの中にあったコードが正しく実行されたことを確認しました。
しかし、実際にJavaScriptを実行する必要があった2つのユーザースクリプトでは、ページスクリプトが実行される前にとが実行されていました。それは今あなたのことを、判明あなたwindow
(またはdocument
)上で動作するようにDOMContentLoaded
ラッパーのために、メタデータブロックに
// @run-at document-start
を配置する必要がありを。
以前のバージョンのGreaseMonkeyではこれを省略しても問題ありませんでした。
GreaseSpot Wikiによれば、おそらく非同期的な実行やアドオンのWebExtensionsリライトの機能がないために、document-start
はGreaseMonkey 4.0で動作するとは限りません。
また、document.readyState
はdocument-end
またはまったく// @run-at
でdocument-start
と"loading"
が、"interactive"
になります。
'@ run-at document-end'を試しましたか? – peterh