Chrome拡張機能のコンテンツスクリプトを介してグローバルJavaScript変数にアクセスできる簡単な方法はありますか?
Chrome拡張機能のコンテンツスクリプトからグローバルオブジェクトにアクセスする
上記のリンクに記載されている手順に従いましたが、うまくいきませんでした。どんな助けでも大歓迎です。
ありがとう、シャンカー
Chrome拡張機能のコンテンツスクリプトを介してグローバルJavaScript変数にアクセスできる簡単な方法はありますか?
Chrome拡張機能のコンテンツスクリプトからグローバルオブジェクトにアクセスする
上記のリンクに記載されている手順に従いましたが、うまくいきませんでした。どんな助けでも大歓迎です。
ありがとう、シャンカー
この質問への答えを探している将来の人のために、これが私がそれをする方法です:
function getVariable(v) {
var c = document.createElement("div");
c.id = 'var-data';
c.style.display = 'none';
document.body.appendChild(c);
var s = document.createElement('script');
s.innerHTML = 'document.getElementById("var-data").innerText=JSON.stringify('+v+');';
document.head.appendChild(s);
var data = JSON.parse(c.innerText);
c.remove();
s.remove();
return data;
}
そして基本的な使用法:
getVariable('globalVarIWantToAccess');
このスクリプトはすべて、メインWebページのコードではなく、コンテンツスクリプトに含まれます。つまり、Webページ自体からの協力は必要ありません。基本的に、このgetVariable
関数はメインページに挿入されるスクリプト要素を作成します。このスクリプトタグは、要求されたグローバル変数を取得し、データを新しいdivに配置します。次に、この関数は新しいdivからこのデータを取得し、新しいdivを削除し、新しいスクリプト要素を削除してデータを返します。
なんとか完成しました。助けてくれてありがとう。単純なメッセージパッシングを使用して、拡張スクリプトからコンテンツスクリプトに値を取得しました。私が見逃した場所は、拡張スクリプトのリスナーがバックグラウンドページにいる必要があるということでした(私はそう思います)。私がそれを変更すると、それは機能しました。