私が開発したクロムエクステンションは、コンテンツスクリプトを使用する典型的な方法ではなく、HTMLインポートを介してホストページに注入します。 isolated world。"孤立した世界"(クロム)でjavascriptを実行
この背後にある理由は2つのことに関係しています:
- Chromeの拡張機能は、Chrome拡張機能マニフェストはJavaScriptのみ 、隔離された環境で実行されているHTMLの輸入をサポートしていません content scripts
- からカスタム要素を登録することはできません
これらの制限のため、ホストページの<head>
にコンポーネントをロードする必要がありました。described hereです。
私が直面している明らかな問題は、自分の依存関係を注入するための方法が「孤立した世界」で実行されないため、JavaScriptがホストページのjavascriptと衝突することです。
これまで私は、GPUのタスク名をPolymer &の名前に変更して競合を回避することで、これらの問題のほとんどを解決しましたが、残念ながら完全ではなく、より堅牢なアプローチが必要です。
最後に私の質問に:私のjavascriptのための "孤立した世界"を作成することは可能ですか?おそらく別のドキュメントオブジェクトですか?そうでない場合は、自分のコードを孤立して実行するための戦略はありますか?
更新:
あなたのいくつかは、私がこれまで使ってきたものです生命維持を使用して提案しました。私は孤立した世界のラインに沿った答えを探しています。これは、Google Chromeが拡張機能をどのように実行するかと同様です。これは主にPolymerがグローバルウィンドウオブジェクトにアタッチされる必要があるためです。
これは矛盾しますか?変数名/関数の競合やより複雑なものか? – juvian
変数/関数名の競合。ホストページが独自のバージョンのPolymerを使用する場合は特に当てはまります。 –
あなたはページ上のポリマーを使用できませんか?それが既に存在するかどうかをチェックし、あなたに注射していない場合はチェックします。 – juvian