Axi*_*iol 166 google-chrome google-chrome-extension browser-tab
我很高兴使用Google Chrome扩展程序,我只想知道如何将当前标签的网址存储在变量中?
tha*_*ger 189
更新:该chrome.tabs.getSelected()
方法现已弃用.
获取当前选项卡的URL的推荐方法是使用chrome.tabs.query()
.
示例用法:
chrome.tabs.query({'active': true, 'lastFocusedWindow': true}, function (tabs) {
var url = tabs[0].url;
});
Run Code Online (Sandbox Code Playgroud)
这要求您chrome.tabs
在扩展程序清单中请求访问API :
"permissions": [ ...
"tabs"
]
Run Code Online (Sandbox Code Playgroud)
请务必注意,"当前标签"的定义可能会因您的扩展需求而有所不同.
lastFocusedWindow: true
当您想要访问用户的焦点窗口(通常是最顶层的窗口)中的当前选项卡时,查询中的设置是合适的.
设置currentWindow: true
允许您在扩展程序代码当前正在执行的窗口中获取当前选项卡.例如,如果您的扩展创建新窗口/弹出窗口(更改焦点),但仍希望从运行扩展的窗口访问选项卡信息,这可能很有用.
我选择lastFocusedWindow: true
在这个例子中使用,因为谷歌调出的案例currentWindow
可能并不总是存在.
您可以使用此处定义的任何属性进一步优化选项卡查询:chrome.tabs.query
Axi*_*iol 75
朋友回答我的问题.
首先,您需要设置选项卡API的权限:
"permissions": [
"tabs"
]
Run Code Online (Sandbox Code Playgroud)
并存储URL:
chrome.tabs.getSelected(null,function(tab) {
var tablink = tab.url;
});
Run Code Online (Sandbox Code Playgroud)
Xan*_*Xan 36
其他答案假设您想从弹出窗口或后台脚本中了解它.
如果您想知道内容脚本中的当前URL ,标准JS方式适用:
window.location.toString()
Run Code Online (Sandbox Code Playgroud)
您可以使用属性window.location
来访问URL的各个部分,例如主机,协议或路径.
小智 25
问题是chrome.tabs.getSelected是异步的.下面的代码通常不会按预期工作."tablink"的值在写入控制台时仍未定义,因为getSelected尚未调用重置值的回调:
var tablink;
chrome.tabs.getSelected(null,function(tab) {
tablink = tab.url;
});
console.log(tablink);
Run Code Online (Sandbox Code Playgroud)
解决方案是将代码包装在您将使用函数中的值的位置,并使用getSelected调用该代码.通过这种方式,您可以保证始终具有值集,因为您的代码必须等待在执行之前提供该值.
尝试类似的东西:
chrome.tabs.getSelected(null, function(tab) {
myFunction(tab.url);
});
function myFunction(tablink) {
// do stuff here
console.log(tablink);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
158429 次 |
最近记录: |