gpt4 book ai didi

javascript - 获取当前选项卡的 URL

转载 作者:太空宇宙 更新时间:2023-11-04 15:55:32 27 4
gpt4 key购买 nike

对于测试用例,我想尝试输出当前选项卡的 URL。我的 manifest.json

{
"manifest_version": 2,
"name": "Chrome Extension",
"description": "MyExtension",
"icons": {
"16": "img/favicon.png",
"48": "img/48.png"
},
"version": "0.1",
"background": {
"scripts": ["js/content.js"],
"persistent": false
},
"permissions": [
"tabs", "https://*/*", "http://*/*"
],
"browser_action": {
"default_icon": "img/default_icon.png",
"default_title": "Get URL"
},
"content_scripts": [{
"matches": ["<all_urls>"],
"all_frames": true,
"css": ["css/style.css"]
}],
"short_name": "GetURL"
}

以及我的 content.js

中的代码
document.addEventListener('DOMContentLoaded', () => { 
chrome.tabs.query({ active: true, currentWindow: true }, (tabs) => {
alert(tabs[0].url)
});
});

问题在于,仅显示第一个当前选项卡的 URL,而不显示另一个处于事件状态的选项卡的 URL。我尝试将 currentWindow 更改为 lastFocusedWindowwindowId

最佳答案

请务必阅读 extension architecture overview 。您不需要背景/事件页面,它是扩展程序内完全独立的页面,具有自己的 DOM(文档和窗口),与网页没有任何方式相关。

您需要一个 content script它与网页一起运行,可以直接访问其 DOM。

manifest.json:

"content_scripts": [{
"matches": ["<all_urls>"],
"all_frames": true,
"js": ["js/content.js"],
"css": ["css/style.css"]
}],

内容.js:

console.log(location.href);

在这里您可以编写普通的 JavaScript DOM 代码并访问网页。

不需要 DOMContentLoaded 包装器,因为内容脚本默认注入(inject) document_idle它发生在 document_end 事件之后。如果您需要准确地运行 document_end 处的代码,而不是稍后运行,则可以在 manifest.json 中显式指定:

"content_scripts": [{
"matches": ["<all_urls>"],
"all_frames": true,
"run_at": "document_end",
"js": ["js/content.js"],
"css": ["css/style.css"]
}],

附注alert 是一种适得其反的信息显示方式,因为它会阻塞浏览器 UI。

关于javascript - 获取当前选项卡的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42740111/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com