Sto utilizzando l'API canale in un'estensione di Chrome.Perché l'API canale di Google App Engine (jsapi) non viene caricata in un'estensione di Chrome?
In Google App Engine Channel API Javascript Reference (Python) pagina si dice che
Include the following in your html page before any JavaScript code that refers to it:
<script type="text/javascript" src="/_ah/channel/jsapi"></script>
Così, ho messo che nell'intestazione del mio file options.html:
<html>
<head>
<title>Extension Options</title>
<script type="text/javascript" src="/_ah/channel/jsapi"></script>
</head>
ma Chrome getta jsapiFailed to load resource
errore. Che cosa sto facendo di sbagliato?
Aggiornamento
Come per la risposta di Moishe ho aggiornato la chiamata a JSAPI in questo modo:
<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>
Aggiornamento
ho aggiunto onopen
e altre proprietà. Ora ricevo l'avviso onopen
ma non ricevo l'avviso evt.data
. Che cosa sto facendo di sbagliato?
<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>
E 'questo che usa dev_appserver o in produzione? Puoi fornire dettagli per la scheda "Rete" negli strumenti di sviluppo di Chrome? –
Questo è in produzione. Innanzitutto non c'era nulla nella scheda "Rete"; poi ho ricaricato la pagina come indicato e vedo 2 voci: options.html e jsapi: name: options.html; Metodo: GET; Stato: (dalla cache); Type: text/html; Dimensione: (dalla cache); Tempo: 3 ms e 'jsapi/_ah/canale; OTTIENI, (fallito); non definito; 30B; Grazie! – Zeynel
Ti dispiace dirmi il tuo appid? Cosa succede se provi a navigare direttamente su "http://your-app-id.appspot.com/_ah/channel/jsapi"? –