有没有一种简单的方法可以通过 chrome 扩展中的内容脚本访问全局 javascript 变量?
我按照上面链接中提到的步骤进行操作,但对我没有用。任何帮助将非常感激。
谢谢,尚卡尔
有没有一种简单的方法可以通过 chrome 扩展中的内容脚本访问全局 javascript 变量?
我按照上面链接中提到的步骤进行操作,但对我没有用。任何帮助将非常感激。
谢谢,尚卡尔
对于那些从未来寻找这个问题的答案的人,我是这样做的:
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,删除新脚本元素并返回数据。
我设法完成了它。谢谢您的帮助。我使用简单的消息传递将值从扩展脚本检索到内容脚本。我错过的地方是,扩展脚本的监听器需要在后台页面(我认为是这样)。一旦我改变了它,它就起作用了。