Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/439.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在扩展名'中显示当前选项卡URL;s弹出窗口_Javascript_Html_Google Chrome Extension - Fatal编程技术网

Javascript 在扩展名'中显示当前选项卡URL;s弹出窗口

Javascript 在扩展名'中显示当前选项卡URL;s弹出窗口,javascript,html,google-chrome-extension,Javascript,Html,Google Chrome Extension,我想将当前选项卡url存储在以下字段中: <input type="text" id="pdurl" value=> 我已经在清单文件中设置了选项卡权限。您的代码完全错误。有一些严重的问题,很容易避免检查弹出式控制台的错误。这是: 首先,chrome.tabs.query是一种异步方法。这意味着代码被计算并排队等待执行;当它执行时,将调用并执行回调函数(您将其指定为第二个参数)。这意味着您编写的最后一行将始终失败,因为您要使用的变量仍然不存在(查询函数仍然没有完成工作) 您在回调中

我想将当前选项卡url存储在以下
字段中:

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

我已经在清单文件中设置了
选项卡
权限。

您的代码完全错误。有一些严重的问题,很容易避免检查弹出式控制台的错误。这是:

  • 首先,
    chrome.tabs.query
    是一种异步方法。这意味着代码被计算并排队等待执行;当它执行时,将调用并执行回调函数(您将其指定为第二个参数)。这意味着您编写的最后一行将始终失败,因为您要使用的变量仍然不存在(查询
    函数仍然没有完成工作)

  • 您在回调中创建了一个无用的(而且是错误的(因为您正在为其分配一个数组))变量:不需要
    tab
    变量,因为在当前窗口中查询活动选项卡总是返回一个选项卡,所以您只需要使用
    tabs[0]

  • 您的
    activeTabUrl
    变量是用
    var
    关键字定义的,这将使它成为私有的,您将无法在函数之外使用它(这是您在最后一行中尝试做的,尽管它仍然是错误的)

  • 在最后一行中,您试图将在回调函数中创建的变量分配给输入的
    innerHTML
    :此语句在很多级别上都是错误的我甚至不知道从哪里开始:首先,如果您想在文本输入中实际看到某些内容,您必须修改其属性
    ;第二:变量没有定义;另外,作业中的
    var
    语句在语法上是错误的;第四:即使把前面的三个条件都做对了,你仍然不在回调范围内

  • 如上所述,这是您尝试执行的操作的正确代码:

    chrome.tabs.query({active : true, currentWindow: true}, function (tabs) {
        document.getElementById("pdurl").value = tabs[0].url;
    });
    
    我强烈建议您先看一看一些JavaScript教程,并检查控制台是否有错误*,然后再问类似的问题。


    *弹出控制台中会显示扩展弹出窗口中的错误,您可以右键单击扩展图标并选择“检查弹出窗口”打开该控制台。

    感谢您的帮助。我是编程新手,所以我需要多方面的帮助。我使用的代码如下chrome.tabs.query({'active':true,'windowId':chrome.windows.WINDOW\u ID\u CURRENT},函数(tabs){var adurl=tabs[0].url;document.getElementById(“pdurl”).innerHTML=adurl;});//如何将变量adurl与另一个函数中的当前URL一起使用?您必须在回调中调用所需的函数,将该变量传递给itIt应该是
    tabs[0]。URL
    而不是
    选项卡[0]。url
    
    chrome.tabs.query({active : true, currentWindow: true}, function (tabs) {
        document.getElementById("pdurl").value = tabs[0].url;
    });