У меня также были проблемы с проверкой соединения, но я нашел альтернативный способ сделать это, используя var networkState = navigator.network.connection.type; Я реализовал это совершенно по-другому, привязав переключенную функцию ко всем моим ссылкам. Поскольку это может быть связано с интересом в методе deviceReady, я связываю все ссылки для вызова функции, которая решает, нужно ли проверять соединение или нет. Перейдите ко второй функции для соединения!
function onDeviceReady()
{
//Bind all links and intercept them before they go anywhere //I'm jquery dependant
$('a').bind('click', function(event) {
switch($(this).attr('id'))//using the id value of the link we help us decide what kidn of action we are doing
{
case "data-loader-page":
return event;
break;
case "load-version-data": //I'm about to pull JSON data from a server
if(!checkConnection()){return false}; //check for connection and exit if it fails.
doJSON(); //at this point we have a connection so go get remote data.
return false;
break;
//for un-handled links we will assume that you just want to hash bang
default: return event;
}
});
}
Эта функция прекрасно работает для меня, и вы можете вызывать ее встроенной в событие onclick, если хотите. Это также не зависит от jquery.
function checkConnection() {
var networkState = navigator.network.connection.type;
var states = {};
states[Connection.UNKNOWN] = 'Unknown connection';
states[Connection.ETHERNET] = 'Ethernet connection';
states[Connection.WIFI] = 'WiFi connection';
states[Connection.CELL_2G] = 'Cell 2G connection';
states[Connection.CELL_3G] = 'Cell 3G connection';
states[Connection.CELL_4G] = 'Cell 4G connection';
states[Connection.NONE] = 'No network connection';
if(states[networkState]==states[Connection.NONE] || states[networkState]==states[Connection.UNKNOWN]){
alert('A network connection is required to access this page.');
return false;
} else {
return true;
}
}
Я зависим от jquery / jquery для мобильных устройств
<div data-role="page" data-theme="b" id="sql-manager-page">
<div data-role="header">
<h1>SQL Manager</h1>
</div>
<div data-role="content">
<ul data-role="listview">
<li><a href="#data-loader-page" id="data-loader-page">Data Loader</a></li>
<li><a href="#load-version-data" id="load-version-data" rel="external">Load version data</a></li>
</ul>
</div>
<div data-role="footer">
<h4> <a href="#privacy-page">Privacy</a></h4>
</div>
</div>
Не самый элегантный пример, который я знаю, но я надеюсь, что это поможет;