[英]jQuery Mobile: Why are onClick and onKeyPress events not working?
[英]Socket not working on jQuery Mobile events
我剛剛開始使用jQuery Mobile為fxos開發帶有javascript的應用程序,並且已經陷入與框架相關的問題。 對於我的應用程序,我需要使用mozilla API(mozTCPSocket)提供的tcp通訊,當我在JQM事件之外運行它時,它工作得很好,但是當我從JQM事件(例如,pageshow)中調用socket.open()時,它就可以正常工作看起來每次調用后套接字對象都被殺死。
這是我的代碼:
window.addEventListener('DOMContentLoaded', function() {
'use strict';
var socket;
var host = "someserver";
var port = 6667;
//connect(); // when calling from here, connection works fine
$(document).bind("pageshow", function(e) {
if (typeof e.currentTarget.URL==="string") {
var haystack = $.mobile.path.parseUrl(e.currentTarget.URL);
var needle = /^#server/;
if (haystack.hash.search(needle)!==-1) {
connect(); // ...from here is failing
}
}
});
function connect() {
socket = navigator.mozTCPSocket.open(host,port);
}
socket.ondata = function (event) {
var data = event.data;
var lines = data.split('\r\n');
for (var i=0;i<lines.length;i++) {
if (lines[i].length>0) console.log(lines[i]);
}
}
});
可能出什么問題了?
這當然是錯誤的:
socket.ondata = function (event) {
var data = event.data;
var lines = data.split('\r\n');
for (var i=0;i<lines.length;i++) {
if (lines[i].length>0) console.log(lines[i]);
}
}
您要在undefined
對象上設置ondata
方法。 這意味着以后對connect()
任何調用都不會有任何效果。 同樣,當您定義undefined
對象的方法時,上述方法可能會崩潰。
您應該將代碼重寫為類似以下內容。
window.addEventListener('DOMContentLoaded', function() {
'use strict';
var socket;
var host = "someserver";
var port = 6667;
//connect(); // when calling from here, connection works fine
$(document).bind("pageshow", function(e) {
if (typeof e.currentTarget.URL==="string") {
var haystack = $.mobile.path.parseUrl(e.currentTarget.URL);
var needle = /^#server/;
if (haystack.hash.search(needle)!==-1) {
connect(); // ...from here is failing
}
}
});
function connect() {
socket = navigator.mozTCPSocket.open(host, port);
socket.ondata = onData;
}
function onData (event) {
var data = event.data;
var lines = data.split('\r\n');
for (var i=0;i<lines.length;i++) {
if (lines[i].length>0) console.log(lines[i]);
}
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.