【发布时间】:2018-07-06 23:31:32
【问题描述】:
我正在尝试在 Chrome 扩展中获取当前标签页网址。 所有消息来源都说我需要“chrome.tabs.query({active: true;})” 事实是,chrome.tabs.query 只能在后台执行,而后台活动选项卡始终是并且只有“chrome://extensions”。
有什么方法可以获取 ACTUAL 活动标签的网址?
【问题讨论】:
标签: google-chrome
我正在尝试在 Chrome 扩展中获取当前标签页网址。 所有消息来源都说我需要“chrome.tabs.query({active: true;})” 事实是,chrome.tabs.query 只能在后台执行,而后台活动选项卡始终是并且只有“chrome://extensions”。
有什么方法可以获取 ACTUAL 活动标签的网址?
【问题讨论】:
标签: google-chrome
找到解决方案。
正如我之前提到的,“chrome.tabs.query({active: true;})”只能从background.js运行,而background.js的活动标签总是浏览器的扩展页面,所以没用。
根据安全策略,我们需要浪费大量 PC 资源并执行以下操作: 在 client.js:
function getcururl(){
var s = document.createElement('script');
// TODO: add "script.js" to web_accessible_resources in manifest.json
s.src = chrome.extension.getURL('gturl.js');
s.onload = function() {
window.postMessage({ type: "gtcrurl", value: cururl }, "*");
this.remove();
};
(document.head || document.documentElement).appendChild(s);}
document.addEventListener('DOMContentLoaded', getcururl());
在 gturl.js 中:
var cururl = window.location.host;
现在我们可以在 popup.js 中执行如下操作:
var crurl = "empty";
window.addEventListener("message", function(event) {
if(event.data.type === 'gtcrurl') {
window._test = event.data.value;
console.log(event.data.value);
crurl = event.data.value;
}}, false);
【讨论】: