1

ロードする前にドキュメントに挿入したいスクリプトがあります。IE; まるで機能するはずです

<script..>MYSCRIPT HERE</script>

<html>
.
.

正しく実行される(alert(0)などができる)Chromeでスクリプトを作成しましたが、別の環境で実行されるため、必要なものではありません。ページと同じ環境で実行したい。

以前、私はスタートアップスクリプトで使用したトリックを使用していました

window.location="javascript:<MY SCRIPT HERE>"

これは実行環境を効果的に変更しますが、過去数日間は機能していません。クロームのバグ修正だと思います。これに対する他の回避策はありますか?注:document.bodyなどが使用できないため、起動スクリプトのページにスクリプトタグを動的に追加できません。

私がこれと以前の解決策を必要とする理由の詳細を提供したいと思います。私が制御できないHTMLページ:

.
.
<script>
function a(){//DOSOMETHING}
</script>
.
.
<script>
a(); <<------ I DONT WANT TO CALL THIS
</script>

解決策:スタートアップJavaScriptには

window.location='javascript:const a=function(){};';<<-CONST used!!

これにより、ページが実際に読み込まれるときに「a」の再宣言のエラーが発生します。したがって、a()が呼び出されても、何も起こりません。(賢いですよね?-_-)

しかし今、私がそうするときwindow.location="js:.."、それが別の環境で実行されていることに気づきました!

4

2 に答える 2

3

scriptコンテンツスクリプトを介してタグを追加することにより、ページのJavaScriptコンテキストにスクリプトを挿入できるはずです。つまり、スクリプトをに挿入してdocument_idle、次のように実行することができます。

var s = document.createElement('script');
s.textContent = 'const a = function () {};';
document.documentElement.appendChild(s);

そのスクリプトタグは、スクリプトのコンテキストではなく、ページのコンテキストで実行され、探している結果を達成できるようにする必要があります。

一般的なコンテンツスクリプトのドキュメントは、https://developer.chrome.com/extensions/content_scriptsで入手できます。

于 2012-02-13T09:53:28.063 に答える
0

PAEzが指摘したように、Chromeにはおそらく現在のビルドにバグがあります。しかし、はい、Chrome拡張機能を使用して「ドキュメント」に物事を注入する方法に関する多くの洞察があります。投稿してくれたマイクに感謝します。次回greesemonkeyか何かを使って注入するときはそれを覚えておいてください:)

于 2012-02-23T14:21:16.790 に答える