如何在javascript中从脚本标记获取窗口变量

如何在javascript中从脚本标记获取窗口变量,javascript,html,google-chrome-extension,Javascript,Html,Google Chrome Extension,我需要获取窗口.configData,该变量位于脚本标记内。我的HTML代码中有多个脚本标记。但是我只需要获取包含window.configData变量的脚本标记。 我知道这可以通过使用document.scripts/document.getElementsByTagName('script')并搜索所需变量来实现 我需要在一行中获取该元素,以便将其作为变量传递给chrome扩展中的内容脚本。 下面是我的内容脚本的代码 function getPageDetails(jsonValueToFi

我需要获取窗口.configData,该变量位于脚本标记内。我的HTML代码中有多个脚本标记。但是我只需要获取包含window.configData变量的脚本标记。 我知道这可以通过使用document.scripts/document.getElementsByTagName('script')并搜索所需变量来实现

我需要在一行中获取该元素,以便将其作为变量传递给chrome扩展中的内容脚本。 下面是我的内容脚本的代码

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)- +-------------+