【问题标题】:Chrome extension: get current tab urlChrome 扩展:获取当前标签页 url
【发布时间】:2018-07-06 23:31:32
【问题描述】:

我正在尝试在 Chrome 扩展中获取当前标签页网址。 所有消息来源都说我需要“chrome.tabs.query({active: true;})” 事实是,chrome.tabs.query 只能在后台执行,而后台活动选项卡始终是并且只有“chrome://extensions”。

有什么方法可以获取 ACTUAL 活动标签的网址?

【问题讨论】:

    标签: google-chrome


    【解决方案1】:

    找到解决方案。

    正如我之前提到的,“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);
    

    【讨论】:

    • 我认为那不正确...当设置“avtiveTab”权限时,我可以在 browser_action 中执行查询...代码如下: chrome.tabs.query({active: true, currentWindow: true}, function(tabs) { // 获取活动标签 url var activeTab = tabs[0]; var activeTabURL = activeTab.url; document.getElementById("input").value = activeTabURL; });
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-08
    • 1970-01-01
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2013-09-24
    相关资源
    最近更新 更多