[英]Chrome Extension - DOM undefined After a form submit
提交操作后,擴展程序無法加載頁面的 DOM。
在提交它之前工作。 提交后不起作用。
無法讀取未定義的屬性“正文”
謝謝
清單
{
"name": "Nfe",
"version": "1.0",
"manifest_version": 2,
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": ["content.js"]
}
],
"browser_action": {
"default_popup": "popup.html",
"default_title": "Nfe"
},
"background":{
"scripts": ["background.js"]
},
"permissions": ["tabs"]
}
popup.html
document.querySelector('button').addEventListener('click', onclick, false)
function onclick () {
chrome.tabs.query({url:"http://site"}, function(tabs) {
chrome.tabs.sendMessage(tabs[0].id, {data:"OK"});
});
}
內容.js
// Test load DOM
const interval = setInterval(()=>{
const conteud = document.querySelector("body")
console.log(conteud)
}, 1000)
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
const conteudo = window.document.querySelector("body")
var html = conteudo.outerHTML;
var data = { html: html };
console.log(data)
})
解決了
function interceptData() {
var xhrOverrideScript = document.createElement('script');
xhrOverrideScript.type = 'text/javascript';
xhrOverrideScript.innerHTML = `
(function() {
var XHR = XMLHttpRequest.prototype;
var send = XHR.send;
var open = XHR.open;
XHR.open = function(method, url) {
this.url = url; // the request url
return open.apply(this, arguments);
}
XHR.send = function() {
this.addEventListener('load', function() {
if (this.url.includes('<url-you-want-to-intercept>')) {
var dataDOMElement = document.createElement('div');
dataDOMElement.id = '__interceptedData';
dataDOMElement.innerText = this.response;
dataDOMElement.style.height = 0;
dataDOMElement.style.overflow = 'hidden';
document.body.appendChild(dataDOMElement);
}
});
return send.apply(this, arguments);
};
})();
`
document.head.prepend(xhrOverrideScript);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.