Chrome拡張機能からコンテンツスクリプトを実行しているページの変数であるオブジェクトにアクセスするだけで済みます。Chrome拡張機能を使用してページオブジェクトにアクセスする
私は、コンテンツスクリプトと注入スクリプトが実行され、注入されたスクリプトを使用していくつかの変数を取得し、それらを返すことができる環境とその孤立した世界について知っています。
この質問に関する他の回答を検索しましたが、ほとんどの変数は他のタイプの変数で動作し、基本的な方法ですが、現在はオブジェクトにアクセスできません。
現在の解決策または回避策はありますか?
編集:私は使用した溶液:
コンテンツスクリプト:
//Sends an object from the page to the background page as a string
window.addEventListener("message", function(message) {
if (message.data.from == "myCS") {
chrome.runtime.sendMessage({
siteObject: message.data.prop
});
}
});
var myScript = document.createElement("script");
myScript.innerHTML = 'window.postMessage({from: "myCS", prop: JSON.stringify(OBJECT)},"*");';
document.body.appendChild(myScript);
Background.js:
//Info receiver
chrome.runtime.onMessage.addListener(function(message, sender, sendResponse) {
//When the content script sends the sites object to extract the needed data
if (message.siteObject !== undefined) {
console.log(message.siteObject);
//Process the data
}
});
は、私はまた、このアプローチを試してみましたそれにもかかわらず、私はこの正確なコードをコピーしてオブジェクトを置き換えただけですが、未知のReferenceError:myObject.propertyはまだ定義されていません。 –
私は 'content2.js'のコードを編集しました。この方法で、 'pageObject.existingProperty'をあなたが探している実際のオブジェクトとプロパティに置き換えてみてください。 –
'Uncaught TypeError: 'window'に 'postMessage'を実行できませんでした:2つの引数は必要ですが、1つしか存在しません。 ' –