1

有没有一种简单的方法可以通过 chrome 扩展中的内容脚本访问全局 javascript 变量?

从 chrome 扩展中的内容脚本访问全局对象

我按照上面链接中提到的步骤进行操作,但对我没有用。任何帮助将非常感激。

谢谢,尚卡尔

4

2 回答 2

0

对于那些从未来寻找这个问题的答案的人,我是这样做的:

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

所有这些脚本都在内容脚本中,而不是主网页的代码,这意味着不需要网页本身的合作。基本上,该getVariable函数创建了一个脚本元素,该元素被注入到主页中。此脚本标记检索请求的全局变量并将数据放入新的 div。然后该函数从新 div 中获取此数据,删除新 div,删除新脚本元素并返回数据。

于 2022-03-03T16:46:14.573 回答
-1

我设法完成了它。谢谢您的帮助。我使用简单的消息传递将值从扩展脚本检索到内容脚本。我错过的地方是,扩展脚本的监听器需要在后台页面(我认为是这样)。一旦我改变了它,它就起作用了。

于 2012-05-15T05:15:35.210 回答