首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从chrome扩展中获取当前页面的源HTML

从chrome扩展中获取当前页面的源HTML
EN

Stack Overflow用户
提问于 2012-07-27 16:48:59
回答 1查看 115.6K关注 0票数 94

我有一个chrome扩展。我需要从当前页面的HTML源代码进行分析。我在这里找到了各种具有背景页面和内容脚本的解决方案,但没有一个对我有帮助。这是我到目前为止所知道的:

manifest.json

代码语言:javascript
复制
{
  "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

代码语言:javascript
复制
<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

代码语言:javascript
复制
chrome.extension.onRequest.addListener(function(request, sender, callback) {
    if (request.action == "getSource") {
        callback(document.getElementsByTagName('html')[0].innerHTML);
    }
});

警报总是未定义的警报。即使我在content.js文件中将回调函数更改为:

代码语言:javascript
复制
callback('hello'); 

结果仍然是一样的。我做错了什么?也许我做错了。我真正需要的是:当用户打开扩展弹出窗口(只有那时),我需要当前页面的HTML,以便我可以分析它。

EN

回答 1

Stack Overflow用户

发布于 2020-11-15 03:25:38

以下是我的解决方案:

代码语言:javascript
复制
chrome.runtime.onMessage.addListener(function(request, sender) {
        if (request.action == "getSource") {
            this.pageSource = request.source;
            var title = this.pageSource.match(/<title[^>]*>([^<]+)<\/title>/)[1];
            alert(title)
        }
    });

    chrome.tabs.query({ active: true, currentWindow: true }, tabs => {
        chrome.tabs.executeScript(
            tabs[0].id,
            { code: 'var s = document.documentElement.outerHTML; chrome.runtime.sendMessage({action: "getSource", source: s});' }
        );
    });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11684454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档