Google chrome extension 在chrome扩展中侦听头部加载事件
我试图在用户可以查看之前插入一个css文件(第一个样式是空白的,第二个是黑色的,所以您可以看到更改) 为此,我在document_start上加载我的内容js 但是我不能在head元素上添加侦听器,因为它不存在(=null) 因此,我正在寻找一种捕获head标记的onload事件的方法 谢谢,看看这个问题,它是公认的答案。DOM内容尚未加载到Google chrome extension 在chrome扩展中侦听头部加载事件,google-chrome-extension,event-handling,dom-events,Google Chrome Extension,Event Handling,Dom Events,我试图在用户可以查看之前插入一个css文件(第一个样式是空白的,第二个是黑色的,所以您可以看到更改) 为此,我在document_start上加载我的内容js 但是我不能在head元素上添加侦听器,因为它不存在(=null) 因此,我正在寻找一种捕获head标记的onload事件的方法 谢谢,看看这个问题,它是公认的答案。DOM内容尚未加载到document\u start上,但JavaScript的document对象已加载 因此,您可以监听事件,该事件在加载DOM后立即触发 以下是您的内容脚
document\u start
上,但JavaScript的document
对象已加载
因此,您可以监听事件,该事件在加载DOM后立即触发
以下是您的内容脚本的外观示例:
document.addEventListener("DOMContentLoaded", function(event) {
console.log(document.getElementsByTagName("head")[0].innerHTML);
});
您可以改为使用,它可以在文档开始时访问
,有关更多详细信息,请参阅此线程:
manifest.json
{
"name": "36695983",
"version": "0.1",
"manifest_version": 2,
"content_scripts": [
{
"js": [
"content.js"
],
"matches": [
"<all_urls>"
],
"run_at": "document_start"
}
],
"web_accessible_resources": [
"content.css"
]
}
我用这个:
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (!mutation.addedNodes) return
for (var i = 0; i < mutation.addedNodes.length; i++) {
// do things to your newly added nodes here
var node = mutation.addedNodes[i];
if(node.nodeName == "HEAD"){
//make stuff when head load
//don't forget to stop listener
observer.disconnect();
}
}
})
})
observer.observe(document, {
childList: true
, subtree: true
, attributes: false
, characterData: false
})
var observer=新的突变观察者(函数(突变){
突变。forEach(功能(突变){
如果(!mutation.addedNodes)返回
对于(var i=0;i
以及如何在头部添加脚本标记?document.head对象为空。。。我正在尝试使用MutationObservermoment@thib3113,可能我误解了,所以您希望在当前网页不受您控制的情况下将css插入该网页?我以为页面是你的,所以你可以直接在html@thib3113,您可以使用document.documentElement
,请参见更新的答案。我无法更新html文件,我不是网站的所有者。我不相信你的回答。。。。我已经找到了办法,所以我会的update@thib3113,我更新了我的答案,content.js
将在构建dom之前加载,只需使用document.documentElement.appendChild(您的css标记)
插入css,这发生在“用户可以查看”之前
var observer = new MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
if (!mutation.addedNodes) return
for (var i = 0; i < mutation.addedNodes.length; i++) {
// do things to your newly added nodes here
var node = mutation.addedNodes[i];
if(node.nodeName == "HEAD"){
//make stuff when head load
//don't forget to stop listener
observer.disconnect();
}
}
})
})
observer.observe(document, {
childList: true
, subtree: true
, attributes: false
, characterData: false
})