gpt4 book ai didi

javascript - 使用 Chrome 扩展程序访问页面对象

转载 作者:行者123 更新时间:2023-12-04 17:47:55 25 4
gpt4 key购买 nike

我只需访问一个对象,该对象是我从 Chrome 扩展程序运行内容脚本的页面上的一个变量。

我知道内容脚本和注入(inject)脚本在其中运行的环境及其隔离世界,并且可以使用注入(inject)脚本获取一些变量,然后将它们发回。

我已经搜索了关于这个问题的其他答案,大多数都适用于其他类型的变量,这是基本的方法,但目前没有一个适用于访问对象。

有任何当前的解决方案或解决方法吗?

编辑:我使用的解决方案:

内容脚本:

//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);

背景.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
}

});

最佳答案

你可以尝试在页面中注入(inject)一个script标签来访问对象。如果需要,您可以使用消息传递与您的分机进行通信。例如,假设您要在页面中访问的对象称为 pageObject:

content1.js

//this code will add a new property to the page's object
var myOwnData = "createdFromContentScript";
var myScript = document.createElement("script");
myScript.innerHTML = "pageObject.myOwnData = " + myOwnData;
document.body.appendChild(myScript);

content2.js

//this code will read a property from the existing object and send it to background page

window.addEventListener("message", function(message) {
if (message.data.from == "myCS") {
chrome.runtime.sendMessage({theProperty: message.data.prop});
}
});

var myScript = document.createElement("script");
myScript.innerHTML = 'window.postMessage({from: "myCS", prop: pageObject.existingProperty},"*");';
document.body.appendChild(myScript);

关于javascript - 使用 Chrome 扩展程序访问页面对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47523564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com