Javascript 文档开始和文档结束时的Chrome扩展内容脚本
大家好,正如你们所看到的,我对Chrome extensions非常陌生 在DOM或页面完全加载之前和之后,是否可以从Javascript 文档开始和文档结束时的Chrome扩展内容脚本,javascript,google-chrome-extension,Javascript,Google Chrome Extension,大家好,正如你们所看到的,我对Chrome extensions非常陌生 在DOM或页面完全加载之前和之后,是否可以从content\u scripts运行脚本 比如: "content_scripts": [ { "matches": ["<all_url>"], "js": ["content.js"], "all_frames": true, "run_at": "document_start", "run_at": "document_
content\u scripts
运行脚本
比如:
"content_scripts": [ {
"matches": ["<all_url>"],
"js": ["content.js"],
"all_frames": true,
"run_at": "document_start",
"run_at": "document_end"
} ]
“内容脚本”:[{
“匹配项”:[“”],
“js”:[“content.js”],
“所有框架”:正确,
“运行时间”:“文档开始时间”,
“运行时间”:“文档结束”
} ]
或者类似于:
"content_scripts": [ {
"matches": ["<all_url>"],
"js": ["content1.js"],
"all_frames": true,
"run_at": "document_start"
} ],
"content_scripts": [ {
"matches": ["<all_url>"],
"js": ["content2.js"],
"all_frames": true,
"run_at": "document_end"
} ]
“内容脚本”:[{
“匹配项”:[“”],
“js”:[“content1.js”],
“所有框架”:正确,
“运行时间”:“文档开始”
} ],
“内容脚本”:[{
“匹配项”:[“”],
“js”:[“content2.js”],
“所有框架”:正确,
“运行时间”:“文档结束”
} ]
您只能有一个内容\u脚本
条目,因此如下所示:
"content_scripts": [{
"matches": ["<all_urls>"],
"js": ["content1.js"],
"all_frames": true,
"run_at": "document_start"
},{
"matches": ["<all_urls>"],
"js": ["content2.js"],
"all_frames": true,
"run_at": "document_end"
}]
“内容脚本”:[{
“匹配项”:[“”],
“js”:[“content1.js”],
“所有框架”:正确,
“运行时间”:“文档开始”
},{
“匹配项”:[“”],
“js”:[“content2.js”],
“所有框架”:正确,
“运行时间”:“文档结束”
}]
使用此设置,
content1.js
将在开始时运行,content2.js
将在结束时运行。您正朝着正确的方向前进:
您可以使用该属性,但您的清单需要如下所示:
"content_scripts": [
{
"matches": ["<all_url>"],
"js": ["content1.js"],
"all_frames": true,
"run_at": "document_start"
},
{
"matches": ["<all_url>"],
"js": ["content2.js"],
"all_frames": true,
"run_at": "document_end"
}]
const func1 = params => {
// Stuff that will happen as soon as it can
};
$(document).ready(() => {
// stuff that will happen when DOM is ready
});
如果您不使用jQuery,只需在google上快速搜索一下就可以找到vanilla js中$(document.ready
)的替代方案
其他解决方案您可以使用它从后台脚本使用
chrome.tabs.executeScript()
以编程方式注入内容脚本。我希望它位于页面之前和之后,任何方法都可以。我的意思是在页面完全加载之后和之前。重要的一点是:没有“现在加载所有DOM”的常规方法说明您可以检测页面是否动态创建更多DOM(例如无限滚动)。这需要处理document\u end
(或document\u idle
)只保证所有静态DOM都已被解析。Xan,在这种情况下,我运行一个无限期运行的脚本。嗯,我唯一关心的是在加载页面之前和之后运行两个不同的脚本。这也是正确的,谢谢,还不能投赞成票,另一个家伙早些时候回答了。我想你需要15个代表才能投赞成票,你很快就会得到。func1
除非你显式调用它,否则代码不会运行,如func1()