この質問を読みました DOM に存在するものをオーバーライドする JavaScript コードを挿入することは可能ですか? ほとんどの場合、ソリューションはうまく機能しますが、ページ内の JavaScript コードが最初に実行され、次に content_scripts が実行されるように見えることがあります。
これにより、「OVVERRIDES」が失敗することがあります。
以下のような私のテストコード:
//manifest.json
"content_scripts": [
{
"matches": ["http://*/*"],
"js": ["js_injector.js"],
"run_at": "document_start"
}
//js_injector.js
function injectJs(link) {
var scr = document.createElement('script');
scr.type="text/javascript";
scr.src=link;
document.documentElement.appendChild(scr);
}
injectJs(chrome.extension.getURL('my.js'));
//my.js
console.log("in my.js");
function foo() {
console.log("in my.js foo");
}
//test.html (view this page in chrome)
<html>
<script type="text/javascript">
console.log("I am here 1110");
foo()
console.log("I am here 1111");
</script>
</html>
通常、以下のログを取得します。
in my.js my.js:114
I am here 1110 test.html:4
in my.js foo my.js:116
I am here 1111 test.html:6
ただし、以下のログが取得される場合があります。
I am here 1110 test.html:4
Uncaught ReferenceError: foo is not defined test.html:5
in my.js test.js:114
ページとコンテンツ スクリプトでコードを実行する順序はランダムに見えますか? 私の目的は、コンテンツ スクリプトで定義された js API をターゲット ページで実行できるようにすることです。誰かがそれを修正する方法を知っていますか? ありがとう!