从chrome扩展程序访问当前的html页面

时间:2011-10-08 13:06:05

标签: javascript google-chrome-extension

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

4 个答案:

答案 0 :(得分:14)

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

使用以下代码展开您的清单文件:

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

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

alert(document.title)

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

<小时/> 另见:

答案 1 :(得分:5)

您可以使用tabs module

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

答案 2 :(得分:1)

对于你所做的一切你需要做的就是这个

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

chrome.tabs.executeScript api允许你在当前页面而不是在扩展中运行JavaScript,所以这样可以正常工作但是如果你想在稍后使用更复杂的扩展名中使用页面名称而不是我做pimvdb做了什么

答案 3 :(得分:0)

我使用此扩展程序执行类似的操作:

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"})
});