5

Chrome拡張機能でチャンネルAPIを使用しています。それはそうGoogle App Engine Channel API(jsapi)がChrome拡張機能に読み込まれないのはなぜですか?

Include the following in your html page before any JavaScript code that refers to it:

<script type="text/javascript" src="/_ah/channel/jsapi"></script> 

と言うGoogle App Engine Channel API Javascript Reference (Python)ページで

、私は私のoptions.htmlファイルのヘッダーにすることを置く:

<html> 
<head> 
    <title>Extension Options</title> 
    <script type="text/javascript" src="/_ah/channel/jsapi"></script> 
</head> 

が、ChromeはjsapiFailed to load resourceエラーがスローされます。私は間違って何をしていますか?私はこのようなJSAPIの呼び出しを更新Moisheの答えを1として

更新:

<head> 
    <title>Extension Options</title> 
    <!-- this does not work because it is local 
    <script type="text/javascript" src="/_ah/channel/jsapi"></script> 
    --> 
    <script type="text/javascript" src="https://talkgadget.google.com/talkgadget/channel.js"></script> 
</head> 

アップデートは

私はonopenおよびその他のプロパティを追加しました。今すぐonopenアラートが表示されますが、私はevt.dataアラートを取得していません。私は間違って何をしていますか? Chromeの拡張機能で

<html> 
<head> 
    <title>Extension Options</title> 
    <!-- this does not work because it is local url 
    <script type="text/javascript" src="/_ah/channel/jsapi"></script> 
    --> 
    <script type="text/javascript" src="https://talkgadget.google.com/talkgadget/channel.js"></script> 
</head> 

<body> 
<p>Enter your gmail address:</p> 

<textarea id="getEmail" style="margin-bottom: 4px; width: 250px; height: 20px"> 
</textarea><br /> 

<button id="save">Save</button> 
<!--<button id="save">Clear</button>--> 

<script> 
document.getElementById("getEmail").placeholder = "your gmail address" ; 

//save entered gmail address 
document.getElementById("save").addEventListener 
(
    "click", 
    function() 
    { 
     var userEmail = document.getElementById("getEmail").value; 
     var formData = new FormData(); 
     formData.append("extension_user", userEmail); 
     alert("after formData.append") 

     var channel; 
     var socket; 
     var handler = 
     { 
      onopen: function() { alert("onopen") }, 
      onerror: function() { alert("onerror") }, 
      onclose: function() { alert("onclose") }, 
      onmessage: 
      function (evt) 
      { 
       //evt.data will be what the server sends in channel.send_message 
       console.log("evt.data received from authhandler: " + evt.data); 
       alert("evt.data is: " + evt.data) 
      } 
     };  

     var xhr = new XMLHttpRequest(); 
     //changed to lowercase 
     xhr.onreadystatechange = function() 
     { 
      //alert("xhr.onReadyStateChange") 
      //error handling etc not included 
      if (xhr.readyState == 4 && xhr.status == 200) 
      { 
       token = xhr.responseText; 
       alert("token: " + token) 
       channel = new goog.appengine.Channel(token); 
       socket = channel.open(handler); 
      } 
     }; 
     xhr.open("POST", "http://ting-1.appspot.com/authsender", true); 
     xhr.send(formData); 
     console.log("formData sent to authsender: " + formData); 
    }, false 
) 



</script> 
</body> 
</html> 
+0

これはdev_appserverを使用しているか、本番環境で使用していますか? Chromeの開発ツールの[ネットワーク]タブの詳細を教えてください。 –

+0

これは生産中です。まず「ネットワーク」タブには何もなかった。指示されたとおりにページをリロードし、options.htmlとjsapi:name:options.htmlの2つの項目を表示します。メソッド:GET;ステータス:(キャッシュから);タイプ:text/html;サイズ:(キャッシュから);時間:3msと 'jsapi/_ah/channel; GET、(失敗);未定義; 30B; 5ms'ありがとう! – Zeynel

+0

あなたのappidを教えてもらえますか? 「http://your-app-id.appspot.com/_ah/channel/jsapi」に直接移動するとどうなりますか? –

答えて

3

、あなたは直接チャンネルジャバスクリプト(https://talkgadget.google.com/talkgadget/channel.js)のパスを指定する必要があります。/_ah/channel/jsapiのリクエストは、ロードしようとしているファイルがローカルなので、何かによってリダイレクトできません。

+0

申し訳ありませんが、タイトルについては、私は "Chrome拡張機能"を述べておくべきです。今私は元のエラーは表示されませんが、私は別のものを取得していると私はそれが私のコードに関連している場合はわかりません: 'Uncaught TypeError:オブジェクトの 'onopen'オブジェクト[オブジェクトオブジェクト] channel.jsの77行目 これは私の 'function(evt)'の問題に関連していますか?再度、感謝します。 – Zeynel

+0

関連性があるかどうかわかりませんが、ネットワークタブに 'bind 235.talkgadget.google.com/talkgadget/dch'のGET 200-OKが表示されます – Zeynel

+1

あなたのハンドラでonopenコールバックを指定する必要があります。 –

関連する問題