从内容脚本访问窗口变量

时间:2013-12-10 16:35:17

标签: google-chrome-extension sandbox content-script

如果存在变量window.my_variable_name,我的Chrome扩展程序会尝试查找每个浏览过的网址(以及每个浏览器网址的每个iframe)。

所以我写了一小段内容脚本:

function detectVariable(){
    if(window.my_variable_name || typeof my_variable_name !== "undefined") return true;
    return false;
}

尝试太久后,似乎Content Scripts在某个沙箱中运行。

有没有办法从Chrome内容脚本访问window元素?

1 个答案:

答案 0 :(得分:48)

重要的是要知道内容脚本与当前页面共享相同的DOM,但它们不共享对变量的访问权限。处理这种情况的最好方法是从内容脚本中将脚本标记注入到将读取页面中变量的当前DOM中。

manifest.json中的

"web_accessible_resources" : ["/js/my_file.js"],
在contentScript.js中

function injectScript(file, node) {
    var th = document.getElementsByTagName(node)[0];
    var s = document.createElement('script');
    s.setAttribute('type', 'text/javascript');
    s.setAttribute('src', file);
    th.appendChild(s);
}
injectScript( chrome.extension.getURL('/js/my_file.js'), 'body');
my_file.js中的

// Read your variable from here and do stuff with it
console.log(window.my_variable);