Javascript 文档开始和文档结束时的Chrome扩展内容脚本

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_

大家好,正如你们所看到的,我对Chrome extensions非常陌生

在DOM或页面完全加载之前和之后,是否可以从
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()