क्रोम एक्सटेंशन से वर्तमान पृष्ठ का स्रोत HTML प्राप्त करना



google-chrome-extension (1)

मेरे पास क्रोम एक्सटेंशन है। मुझे वर्तमान पृष्ठ के HTML स्रोत से विश्लेषण करने की आवश्यकता है। मैंने पृष्ठभूमि पृष्ठों और सामग्री स्क्रिप्ट के साथ सभी प्रकार के समाधान यहां पाए लेकिन किसी ने भी मेरी मदद नहीं की। यह है, जो कि अभी तक मेरे पास है:
manifest.json:

{
  "name": "Extension",
  "version": "1.0",
  "description": "Extension",
  "browser_action": {
    "default_icon": "bmarkred.ico",
    "popup": "Test.html"
  },
  "content_scripts": [
    {
      "matches": ["http://*/*"],
      "js": ["content.js"]
    }
  ],
  "background": {
    "page": "backgroundPage.html"
  },
  "permissions": [
    "cookies",
    "tabs",
    "http://*/*", 
    "https://*/*"
  ]
}

background.html:

<html>
<head>
<script type="text/javascript">
    try {
        chrome.tabs.getSelected(null, function (tab) {
            chrome.tabs.sendRequest(tab.id, {action: "getSource"}, function(source) {
                alert(source);
            });
        });
    }
    catch (ex) {
        alert(ex);
    }
</script>
</head>
</html>

content.js:

chrome.extension.onRequest.addListener(function(request, sender, callback) {
    if (request.action == "getSource") {
        callback(document.getElementsByTagName('html')[0].innerHTML);
    }
});

अलर्ट हमेशा अलरिभाषित अलर्ट करता है। भले ही मैं content.js में बदलता हूं, कॉलबैक फ़ंक्शन को यहां फ़ाइल करें:

callback('hello'); 

अभी भी एक ही परिणाम। मैं क्या गलत कर रहा हूं? शायद मैं इस गलत तरीके से जा रहा हूँ। वैसे मुझे वास्तव में यह चाहिए। जब उपयोगकर्ता एक्सटेंशन पॉपअप (और केवल तभी) खोलता है, तो मुझे वर्तमान पृष्ठ के HTML की आवश्यकता होती है, इसलिए मैं इसका विश्लेषण कर सकता हूं। कोई सुझाव?


उस पृष्ठ में एक स्क्रिप्ट इंजेक्ट करें जिसे आप स्रोत प्राप्त करना चाहते हैं और उसे पॉपअप पर वापस भेजना चाहते हैं ....

manifest.json

{
  "name": "Get pages source",
  "version": "1.0",
  "manifest_version": 2,
  "description": "Get pages source from a popup",
  "browser_action": {
    "default_icon": "icon.png",
    "default_popup": "popup.html"
  },
  "permissions": ["tabs", "<all_urls>"]
}

popup.html

<!DOCTYPE html>
<html style=''>
<head>
<script src='popup.js'></script>
</head>
<body style="width:400px;">
<div id='message'>Injecting Script....</div>
</body>
</html>

popup.js

chrome.runtime.onMessage.addListener(function(request, sender) {
  if (request.action == "getSource") {
    message.innerText = request.source;
  }
});

function onWindowLoad() {

  var message = document.querySelector('#message');

  chrome.tabs.executeScript(null, {
    file: "getPagesSource.js"
  }, function() {
    // If you try and inject into an extensions page or the webstore/NTP you'll get an error
    if (chrome.runtime.lastError) {
      message.innerText = 'There was an error injecting script : \n' + chrome.runtime.lastError.message;
    }
  });

}

window.onload = onWindowLoad;

getPagesSource.js

// @author Rob W <http://.com/users/938089/rob-w>
// Demo: var serialized_html = DOMtoString(document);

function DOMtoString(document_root) {
    var html = '',
        node = document_root.firstChild;
    while (node) {
        switch (node.nodeType) {
        case Node.ELEMENT_NODE:
            html += node.outerHTML;
            break;
        case Node.TEXT_NODE:
            html += node.nodeValue;
            break;
        case Node.CDATA_SECTION_NODE:
            html += '<![CDATA[' + node.nodeValue + ']]>';
            break;
        case Node.COMMENT_NODE:
            html += '<!--' + node.nodeValue + '-->';
            break;
        case Node.DOCUMENT_TYPE_NODE:
            // (X)HTML documents are identified by public identifiers
            html += "<!DOCTYPE " + node.name + (node.publicId ? ' PUBLIC "' + node.publicId + '"' : '') + (!node.publicId && node.systemId ? ' SYSTEM' : '') + (node.systemId ? ' "' + node.systemId + '"' : '') + '>\n';
            break;
        }
        node = node.nextSibling;
    }
    return html;
}

chrome.runtime.sendMessage({
    action: "getSource",
    source: DOMtoString(document)
});




google-chrome-extension