2017-01-14 5 views
0

初めて開発しているChrome拡張機能に使用したいjQueryの遅延と約束を理解しています。私は現在のタブがFacebook.comであるかどうかをポップアップウィンドウ内で検出できるようにしたい。よりシンプルな方法があるかもしれませんが、途中で延期と約束を学びたいと思います。それは単なるテストプロジェクトです。申し訳ありませんが、私の悪い英語とすべてのコメントは非常に感謝しています!前もって感謝します。下にあなたが私のコードを見つけるでしょう...クロム拡張コードの単純なjQuery遅延問題

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'); 
    }); 
}); 

答えて

1

は、基本的に何をしようとする約束として機能するようにコールバックして機能を「オン」することですが、あなたは間違ってそれをやっています。 here

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(); 
      } 
     }); 
    }); 
} 

より多くの原料:

はこれを試してみてください。

+0

ありがとう、これは正しい方向への一歩です。私はまだこれを表示する方法を把握することはできませんfacebookまたはこれはFacebookではありません。これまでのあなたの助けてくれてありがとう、本当にクール! –

+0

もう一度手助けをしてくれた人に感謝します。今私は何かを学んだし、それをやる方法が複数あることを知っている。あなたの知恵のために混乱して、ありがとう。 –