簡體   English   中英

Chrome 擴展 - DOM 未定義 提交表單后

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM