Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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
chrome扩展代码中的简单jQuery延迟问题_Jquery_Google Chrome_Jquery Deferred - Fatal编程技术网

chrome扩展代码中的简单jQuery延迟问题

chrome扩展代码中的简单jQuery延迟问题,jquery,google-chrome,jquery-deferred,Jquery,Google Chrome,Jquery Deferred,我在理解jQuery和promise时遇到了一个小问题,我想将其用于我第一次开发的Chrome扩展。我希望能够在弹出窗口中检测当前选项卡是否为Facebook.com。我知道可能会有更简单的方法,但我想在此过程中学习延迟和承诺。这只是一个测试项目。很抱歉我的英语不好,非常感谢您的每一句评论!提前谢谢。下面你会找到我的代码 function getCurrentTabUrl(callback) { // https://developer.chrome.com/extensions/tabs#

我在理解jQuery和promise时遇到了一个小问题,我想将其用于我第一次开发的Chrome扩展。我希望能够在弹出窗口中检测当前选项卡是否为Facebook.com。我知道可能会有更简单的方法,但我想在此过程中学习延迟和承诺。这只是一个测试项目。很抱歉我的英语不好,非常感谢您的每一句评论!提前谢谢。下面你会找到我的代码

function getCurrentTabUrl(callback) {
  // https://developer.chrome.com/extensions/tabs#method-query
  alert("hmm");
  var dfd = $.Deferred();
  var queryInfo = {
    active: true,
    currentWindow: true
  };

  chrome.tabs.query(queryInfo, function(tabs) {
    alert(tabs[0].url);
    if(callback(tabs[0].url)) {
      dfd.resolve();
    } else {
      dfd.reject();
    }
  });

  return dfd.promise();

}


document.addEventListener('DOMContentLoaded', function() {

  var callback = function getCurrentTab(tab){
        alert("ök");
        if(tab == "https://www.facebook.com/") { return true; }
        else { return false; }

  }

  getCurrentTabUrl(callback).done(function () {
      alert('on facebook');
      $('.section').hide();

      $('.navitem').on('click', function () {
        var value = $(this).html().toLocaleLowerCase();
        $('.section').hide();

        $('#'+value).show();
      });


  }).fail(function () {
    alert('not on facebook');
  });
});

基本上,您试图做的是将带有回调的函数转换为承诺,但您做得不对

试试这个:

function getCurrentTabUrl(callback) {
    return new Promise(function (resolve, reject) {
        // https://developer.chrome.com/extensions/tabs#method-query
        alert("hmm");
        var queryInfo = {
            active: true,
            currentWindow: true
        };

        chrome.tabs.query(queryInfo, function (tabs) {
            alert(tabs[0].url);
            if (callback(tabs[0].url)) {
                resolve();
            } else {
                reject();
            }
        });
    });
}

更多信息。

嘿,非常感谢,这是朝着正确方向迈出的一步。我仍然不知道如何显示这是facebook或者这不是facebook。谢谢你迄今为止的帮助,真的很酷!再次感谢你,在一些资源的帮助下,它完全起作用了。现在我学到了一些东西,我知道有多种方法可以做到这一点。太令人困惑了,谢谢你的智慧。