2011-10-08 89 views
9

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

回答

3

可以使用tabs module

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

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

展开清单文件与此代码:

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

内容的脚本(截至matches提到在manifest文件每一页上自动执行):

alert(document.title) 

使用内容脚本的优势chrome.extension.*方法是,您的扩展不需要SC ary权限,如tabs


参见:

+0

@罗布女:我刚才问过类似的问题http://stackoverflow.com/questions/1964225/accessing-current-tab -dom对象从 - 弹出式的HTML。但在我的情况下,扩展将信息从当前标签发送到我的书签应用程序。我理解你的答案的方式,然后,我试图书签的任何页面都需要包含在清单文件中。它是否正确?在这种情况下,这将是无用的。谢谢。 – Zeynel

+1

@Zeynel然后包括'“*”':'“匹配”:[“*”],' –

+0

@ Rob W:谢谢。我可能不会这样做,但我必须输入'“匹配”:[“http:// */*”],以使其按照此http://code.google.com/chrome/extensions /match_patterns.html,否则我得到'丢失计划分离器'我还没有尝试过,但至少扩展上传。再次感谢。 – Zeynel

1

为你做什么你东东d做的是

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

的chrome.tabs.executeScript API允许你在当前页面,而不是在扩展运行JavaScript所以这个工作得很好,但如果你以后要使用该页面的名称在更复杂的扩展比我只想做了什么

+1

这是否需要向CSP添加'unsafe-eval'? – Xan

0

我用什么pimvdb这个扩展做类似的事情:

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"}) 
}); 
相关问题