如何在javascript中从脚本标记获取窗口变量
我需要获取窗口.configData,该变量位于脚本标记内。我的HTML代码中有多个脚本标记。但是我只需要获取包含window.configData变量的脚本标记。 我知道这可以通过使用document.scripts/document.getElementsByTagName('script')并搜索所需变量来实现 我需要在一行中获取该元素,以便将其作为变量传递给chrome扩展中的内容脚本。 下面是我的内容脚本的代码如何在javascript中从脚本标记获取窗口变量,javascript,html,google-chrome-extension,Javascript,Html,Google Chrome Extension,我需要获取窗口.configData,该变量位于脚本标记内。我的HTML代码中有多个脚本标记。但是我只需要获取包含window.configData变量的脚本标记。 我知道这可以通过使用document.scripts/document.getElementsByTagName('script')并搜索所需变量来实现 我需要在一行中获取该元素,以便将其作为变量传递给chrome扩展中的内容脚本。 下面是我的内容脚本的代码 function getPageDetails(jsonValueToFi
function getPageDetails(jsonValueToFind, callback) {
chrome.tabs.executeScript({code:
"document.defaultView.configData"
}, function(result) {
var value = result[0];
chrome.tabs.query({currentWindow: true, active: true}, function(tabs) {
callback({
url: tabs[0].url,
title: tabs[0].title,
jsonValue: value
});
});
});
+-----------------+ -(executeScript)-> +----------------+ --(<script>)---> +-------------+
| Background page | | Content script | | Page script |
+-----------------+ <--(sendMessage)-- +----------------+ <-(CustomEvent)- +-------------+
}
我需要将此变量传递到内容脚本的代码部分。
有人能给我建议如何实现这一点吗?只需使用onload处理程序和id补充实现window.configData的脚本即可
var script document.getelementbyid("scriptid");
script.onload= function(){ window.configData; }
解析页面的源代码以从页面的
窗口
中挖掘变量可能不是一个好主意。如果这不是一个简单的任务呢?如果标签自删除怎么办
您可能已经注意到,如果尝试在内容脚本的上下文中计算window.configData
,它将返回undefined
原因是:目标页面将附加两个独立的JS上下文,一个用于页面(具有configData
)和内容脚本的上下文<代码>窗口对象不同
要访问页面对象,需要在页面上下文中执行代码。如果你愿意,这是可能的。然后,您可以在DOM中的某个地方编写它,内容脚本可以在那里访问它
function getPageDetails(jsonValueToFind, callback) {
chrome.tabs.executeScript({code:
"document.defaultView.configData"
}, function(result) {
var value = result[0];
chrome.tabs.query({currentWindow: true, active: true}, function(tabs) {
callback({
url: tabs[0].url,
title: tabs[0].title,
jsonValue: value
});
});
});
+-----------------+ -(executeScript)-> +----------------+ --(<script>)---> +-------------+
| Background page | | Content script | | Page script |
+-----------------+ <--(sendMessage)-- +----------------+ <-(CustomEvent)- +-------------+