javascript 从Chrome扩展访问当前的HTML页面

r1zhe5dt  于 2023-04-04  发布在  Java
关注(0)|答案(4)|浏览(149)

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

7xzttuei

7xzttuei1#

内容脚本是最简单的方法:
使用以下代码展开清单文件:

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

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

alert(document.title)

chrome.extension.*方法相比,使用内容脚本的优点是您的扩展不需要可怕的权限,例如tabs
参见:

smdnsysy

smdnsysy2#

您可以使用tabs module

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

332nm8kg3#

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

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

chrome.tables.executeScript允许你在当前页面而不是扩展中运行JavaScript,所以这很好用,但是如果你想在更复杂的扩展中使用页面的名字,我会像pimvdb那样做

eh57zj3b

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

相关问题