我是新的 chrome 扩展。我想创建一个简单的 chrome 扩展,弹出一个警报与当前html页面的标题。当我执行:alert(document.title),我没有得到它,因为文档对象不属于页面,而是属于扩展脚本(它是正确的吗?)我如何得到正确的文档对象?
alert(document.title)
7xzttuei1#
内容脚本是最简单的方法:使用以下代码展开清单文件:
... "content_scripts": [ { "matches": ["http://urlhere/*"], "js": ["contentscript.js"] } ], ...
内容脚本(在清单文件的matches中提到的每个页面上自动执行):
matches
与chrome.extension.*方法相比,使用内容脚本的优点是您的扩展不需要可怕的权限,例如tabs。参见:
chrome.extension.*
tabs
smdnsysy2#
您可以使用tabs module:
chrome.tabs.getCurrent(function(tab) { alert(tab.title); });
332nm8kg3#
对于你所做的一切你需要做的就是这个
chrome.tabs.executeScript({ code: 'alert(document.title)' })
chrome.tables.executeScript允许你在当前页面而不是扩展中运行JavaScript,所以这很好用,但是如果你想在更复杂的扩展中使用页面的名字,我会像pimvdb那样做
eh57zj3b4#
我使用这个扩展来做类似的事情: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"}) });
4条答案
按热度按时间7xzttuei1#
内容脚本是最简单的方法:
使用以下代码展开清单文件:
内容脚本(在清单文件的
matches
中提到的每个页面上自动执行):与
chrome.extension.*
方法相比,使用内容脚本的优点是您的扩展不需要可怕的权限,例如tabs
。参见:
smdnsysy2#
您可以使用tabs module:
332nm8kg3#
对于你所做的一切你需要做的就是这个
chrome.tables.executeScript允许你在当前页面而不是扩展中运行JavaScript,所以这很好用,但是如果你想在更复杂的扩展中使用页面的名字,我会像pimvdb那样做
eh57zj3b4#
我使用这个扩展来做类似的事情:
main.js:
manifest.json:
background.js: