在扩展程序的弹出窗口中显示当前标签页

时间:2015-01-21 14:58:01

标签: javascript html google-chrome-extension

我想将当前标签页存储在以下<input>字段中:

<input type="text" id="pdurl" value=>

我在popup.js中写的代码如下:

chrome.tabs.query({active : true, currentWindow: true}, function (tabs) {
    var tab = (tabs.length === 0 ? tabs : tabs[0]);

    var activeTabUrl = tab.url;
});

document.getElementById("pdurl").innerHTML = var activeTabUrl;

我已经在清单文件中设置了tabs权限。

1 个答案:

答案 0 :(得分:2)

你的代码完全错了。有一些严重的问题,很容易避免检查弹出控制台是否有错误。他们在这里:

  1. 首先,chrome.tabs.query异步方法。这意味着代码被评估并排队等待执行;当它执行时,调用并执行回调函数(你将其指定为第二个参数)。这意味着你写的最后一行总是会失败,因为你想要使用的变量仍然不存在(query函数还没有完成工作)。

  2. 你在回调中创建了一个无用的(而且是错误的(因为你要为它分配一个数组))变量:不需要你的tab变量,因为查询当前窗口中的有效标签始终会返回单个标签,因此您只需使用tabs[0]

  3. 您的activeTabUrl变量是使用var关键字定义的,这将使其成为私有,并且您无法在该功能之外使用它(这就是您和#39;在最后一行尝试做,虽然它仍然是错的。)

  4. 在最后一行中,您尝试将您在回调函数中创建的变量分配给输入的innerHTML:此语句在如此多级别上错误我甚至不知道从哪里开始:首先,如果你想在文字输入中看到某些东西,你必须修改它的value ;第二:变量没有定义;另外,你的作业中的var语句会使语法错误;第四:即使完成前三个条件中的所有条件你仍然没有回调

  5. 如上所述,这是您正在尝试做的正确代码:

    chrome.tabs.query({active : true, currentWindow: true}, function (tabs) {
        document.getElementById("pdurl").value = tabs[0].url;
    });
    

    我强烈建议您先查看一些JavaScript教程,并在询问此类问题之前检查控制台是否有错误。

    *弹出控制台中会显示扩展弹出窗口中的错误,您可以右键单击扩展程序的图标并选择&#34; Inspect popup&#34;。