我有谷歌Chrome扩展的乐趣,我只是想知道我如何在变量中存储当前选项卡的URL ?
当前回答
嗨,这里是一个谷歌Chrome样本,电子邮件当前的网站给一个朋友。背后的基本理念是你想要什么…首先,它获取页面的内容(对你来说不感兴趣)…然后它得到URL(<——好部分)
此外,这是一个很好的工作代码示例,我更喜欢阅读文档。
可在这里找到: 通过电子邮件发送本页
其他回答
你得检查一下。
HTML
<button id="saveActionId"> Save </button>
manifest.json
"permissions": [
"activeTab",
"tabs"
]
JavaScript 下面的代码将活动窗口的所有url保存为JSON对象,作为按钮单击的一部分。
var saveActionButton = document.getElementById('saveActionId');
saveActionButton.addEventListener('click', function() {
myArray = [];
chrome.tabs.query({"currentWindow": true}, //{"windowId": targetWindow.id, "index": tabPosition});
function (array_of_Tabs) { //Tab tab
arrayLength = array_of_Tabs.length;
//alert(arrayLength);
for (var i = 0; i < arrayLength; i++) {
myArray.push(array_of_Tabs[i].url);
}
obj = JSON.parse(JSON.stringify(myArray));
});
}, false);
问题是chrome.tabs.getSelected是异步的。下面的代码通常不能正常工作。tablink的值在被写入控制台时仍然是未定义的,因为getSelected还没有调用重置值的回调:
var tablink;
chrome.tabs.getSelected(null,function(tab) {
tablink = tab.url;
});
console.log(tablink);
解决方案是在函数中使用值的地方包装代码,并由getSelected调用该值。通过这种方式,您可以保证始终拥有一个值集,因为您的代码在执行之前必须等待该值被提供。
试着这样做:
chrome.tabs.getSelected(null, function(tab) {
myFunction(tab.url);
});
function myFunction(tablink) {
// do stuff here
console.log(tablink);
}
嗨,这里是一个谷歌Chrome样本,电子邮件当前的网站给一个朋友。背后的基本理念是你想要什么…首先,它获取页面的内容(对你来说不感兴趣)…然后它得到URL(<——好部分)
此外,这是一个很好的工作代码示例,我更喜欢阅读文档。
可在这里找到: 通过电子邮件发送本页
这是一个非常简单的方法
window.location.toString();
你可能不得不这样做的内容脚本,因为它有所有的功能,在一个网页上的js文件可以有和更多。
这个解决方案已经测试过了。
在manifest.json中设置API的权限
"permissions": [ ...
"tabs",
"activeTab",
"<all_urls>"
]
对第一个加载调用函数。https://developer.chrome.com/extensions/tabs#event-onActivated
chrome.tabs.onActivated.addListener((activeInfo) => {
sendCurrentUrl()
})
关于更改调用函数。https://developer.chrome.com/extensions/tabs#event-onSelectionChanged
chrome.tabs.onSelectionChanged.addListener(() => {
sendCurrentUrl()
})
获取URL的函数
function sendCurrentUrl() {
chrome.tabs.getSelected(null, function(tab) {
var tablink = tab.url
console.log(tablink)
})
推荐文章
- 卸载Chrome开发工具
- 如何触发自动填充在谷歌Chrome?
- CSS变换,锯齿边缘在铬
- 为什么Chrome浏览器不正确地确定页面是在不同的语言,并提供翻译?
- Chrome在哪里存储扩展?
- 窗口。亲近与自我。close不关闭Chrome中的窗口
- 防止滚动条增加到Chrome页面的宽度
- URL中的“#:~:text=”位置哈希值到底是什么?
- 如何禁用谷歌翻译从HTML在Chrome
- Chrome开发工具:如何找出什么是覆盖CSS规则?
- 资源解释为样式表,但以MIME类型text/html传输(似乎与web服务器无关)
- Chrome iOS(和Safari)的远程调试
- 在Chrome中模拟有限的带宽?
- 资源解释为文档,但使用MIME类型application/zip传输
- 如何让Chrome允许混合内容?