【问题标题】:accessing the current html page from chrome extension从 chrome 扩展访问当前的 html 页面
【发布时间】:2011-10-08 13:06:05
【问题描述】:

我是 chrome 扩展的新手。 我想创建一个简单的 chrome 扩展,它会弹出带有当前 html 页面标题的警报。 当我正在执行时:alert(document.title),我没有得到它,因为文档对象不属于页面而是属于扩展脚本(是否正确?) 如何获得正确的文档对象?

【问题讨论】:

    标签: javascript google-chrome-extension


    【解决方案1】:

    内容脚本是最简单的方法:

    使用此代码扩展您的清单文件:

    ...
    "content_scripts": [
      {
      "matches": ["http://urlhere/*"],
      "js": ["contentscript.js"]
      }
    ],
    ...
    

    内容脚本(在清单文件matches 中提到的每个页面上自动执行):

    alert(document.title)
    

    chrome.extension.* 方法相比,使用内容脚本的优势在于您的扩展不需要可怕的权限,例如tabs


    也可以看看:

    【讨论】:

    • @Rob W:我刚刚问了一个类似的问题stackoverflow.com/questions/1964225/…。但在我的情况下,扩展程序将信息从当前选项卡发送到我的书签应用程序。那么,按照我理解您的答案的方式,我尝试添加书签的任何页面都需要包含在清单文件中。它是否正确?在这种情况下,它将毫无用处。谢谢。
    • @Zeynel 然后包括"*":"matches": ["*"],
    • @Rob W:谢谢。我可能做的不对,但我必须输入"matches": ["http://*/*"], 以使其根据code.google.com/chrome/extensions/match_patterns.html 工作,否则我得到Missing scheme separator 我还没有尝试过,但至少上传了扩展名。再次感谢。
    【解决方案2】:

    您可以使用tabs module:

    chrome.tabs.getCurrent(function(tab) {
        alert(tab.title);
    });
    

    【讨论】:

      【解决方案3】:

      对于你正在做的所有你需要做的就是这个

      chrome.tabs.executeScript({
          code: 'alert(document.title)'
      })
      

      Chrome.tabs.executeScript 允许您在当前页面而不是扩展程序中运行 JavaScript。所以这工作得很好,但如果你想稍后在更复杂的扩展中使用页面的名称,而不是我会做 pimvdb 所做的事情

      【讨论】:

      • 这需要将unsafe-eval 添加到CSP 吗?
      【解决方案4】:

      我使用这个扩展来做类似的事情:

      main.js:

      (function(){window.prompt('Page title:', document.title)})()

      manifest.json:

      {
       "background": {"scripts": ["background.js"]},
       "browser_action": {
       "default_title": "popup_title"
       },
       "name": "popup_title",
       "description": "Display the page title for copying",
       "permissions": [
           "tabs",
           "http://*/*",
           "https://*/*"
       ],
       "version": "1.0",
       "manifest_version": 2
      }
      

      background.js:

      chrome.browserAction.onClicked.addListener(function(tab) {
          chrome.tabs.executeScript(tab.id, {file: "main.js"})
      });
      

      【讨论】:

        猜你喜欢
        • 2012-07-25
        • 1970-01-01
        • 1970-01-01
        • 2014-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多