Google chrome extension 使用inspectedWindow.reload插入javascript文件
我想知道是否有可能在任何情况下注入一个javascript文件,而不仅仅是代码语句 例如(什么有效): 但我想看看是否可以插入一个.js文件(不起作用):Google chrome extension 使用inspectedWindow.reload插入javascript文件,google-chrome-extension,google-chrome-devtools,Google Chrome Extension,Google Chrome Devtools,我想知道是否有可能在任何情况下注入一个javascript文件,而不仅仅是代码语句 例如(什么有效): 但我想看看是否可以插入一个.js文件(不起作用): 不,此API不允许这样做,但编写一个包装器并不难: 使用XHR请求file.js 调用reload,响应为injectedScript 例如: function reloadWithFile(scriptFile) { var xhr = new XMLHttpRequest(); xhr.addEventListener("load
不,此API不允许这样做,但编写一个包装器并不难:
file.js
reload
,响应为injectedScript
function reloadWithFile(scriptFile) {
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", function(evt) {
chrome.devtools.inspectedWindow.reload({
ignoreCache: true,
injectedScript: xhr.responseText
});
});
xhr.open("GET", chrome.runtime.getURL(scriptFile));
xhr.send();
}
通过连接多个文件来注入多个文件只是一个练习(可能会有帮助)。我认为这不可能或还不可能做到。但还有其他解决方法,如使用
content.js
或使用background.js
chrome.tabs.executeScript()插入文件。您可能想检查一下,我想到了这一点,但问题在于reload()
的功能。它有效地在“文档开始”内容脚本中一次性注入运行。这将是非常棘手的实现,因为涉及到时间安排-在提交导航之前,您无法在“新”页面上执行executeScript
,我的时间可能太晚了,无法在页面自己的脚本之前进行注入。感谢您指出我错过的一些信息,并投票给您的答案
chrome.devtools.inspectedWindow.reload({
ignoreCache: true,
injectedScript: 'file.js'
});
function reloadWithFile(scriptFile) {
var xhr = new XMLHttpRequest();
xhr.addEventListener("load", function(evt) {
chrome.devtools.inspectedWindow.reload({
ignoreCache: true,
injectedScript: xhr.responseText
});
});
xhr.open("GET", chrome.runtime.getURL(scriptFile));
xhr.send();
}