【发布时间】:2018-05-06 17:28:08
【问题描述】:
早上好 我尝试使用 chrome 扩展程序或用户脚本在执行之前删除脚本。 我试过了
chrome.tabs.onUpdated.addListener(function(tabid, info, tab) {
chrome.tabs.executeScript(tabid, {file:"test.js"});
//if (info.status == "complete") {
//
// }
});
在 test.js 中,我删除了第一个脚本元素(仅用于示例)
document.body.querySelectorAll('*')[0].remove()
即使第一次调用 test.js 也为时已晚,页面内的脚本已经执行完毕。 有没有办法在解释之前替换 HTML 或在执行之前删除脚本?
我也为用户脚本尝试了"run_at": "document_start",但脚本是在我要删除的脚本加载到 dom 之前运行的,所以我无法删除它。
过去,使用 beforeload 事件是可能的,但它已从 chrome 中删除。
我也尝试了chrome.runtime.onMessage.addListener 和chrome.webRequest.onBeforeRequest.addListener,但是当我重新加载页面时它们不会被触发。
谢谢
【问题讨论】:
-
那无济于事。您必须重写整个页面 html,example。当然,您还需要在 executeScript 中使用 runAt: 'document_start'。
-
谢谢。这种方法的问题是请求被发出了两次,但如果我可以先阻止第一个请求,那就是解决方案。
-
不幸的是,在 Chrome 中这是唯一的方法。
-
window.stop() 是不够的,我已将其替换为 document.close();window.stop();即使我们浪费了一点时间,它也能正常工作。
标签: javascript google-chrome google-chrome-extension