这可能看起来像一个重复的问题,但事实是我已经尝试了几个可用的语法堆栈&其他网站,但无济于事。用PhoneGap使用jQuery和deviceready时遇到的问题
我正在PhoneGap中开发我的第一个应用程序。最初,我使用了在浏览器中运行良好的document.ready。后来我发现它不适用于我需要使用deviceready的应用程序&。
事情是我已经尝试了几种语法,从文档&堆栈,但他们都失败了。
另外,lemme知道我是否需要使用任何插件来使用deviceready。
我的代码的测试显示,既没有deviceready事件侦听器也没有任何jQuery代码在我的应用程序中工作。我不知道为什么?
的index.html:
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
...
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript" src="www/js/jquery.touchSwipe.min.js"></script>
<script src="www/js/index.js"></script>
</body>
index.js:
alert('Entered JS') ;
document.addEventListener("deviceready", onDeviceReady, false);
$(document).ready(function() {
function onDeviceReady() {
alert ('Device Ready') ;
//this one is not showing
};
});
这是我最新的审判。
感谢大家的帮助。问题的解决方案如下:
1 - >不要加载任何css,js或其他文件作为phoneGap或科尔多瓦默认情况下不允许这个。 2 - >虽然如果您的应用程序要求您通过网络发送请求,请使用Cordova的cordova-plugin-whitelist插件将您的网址列入白名单。 3 - >作为码的,它进入如下:
的index.html:
<!DOCTYPE html>
<html>
<head>
<title></title>
<script src="www/js/jquery.min.js"></script>
<script type="text/javascript" src="www/js/jquery.touchSwipe.min.js"></script>
<script src="cordova.js"></script>
</head>
<body>
...
<!-- Loading js containing deviceready & other functions-->
<script src="www/js/index.js"></script>
</body>
如可以看到的,有必要包括cordova.js。
index.js:
$(document).ready(function() {
window.isphone = false;
if(document.URL.indexOf("http://") === -1
&& document.URL.indexOf("https://") === -1) {
window.isphone = true;
}
if(window.isphone) {
document.addEventListener("deviceready", onDeviceReady, false);
} else {
onDeviceReady();
}
});
function onDeviceReady()
{
//...
}
上面的代码,确保您的应用程序没有任何变化这两个网络上工作&设备。如果你只想要基于设备的.js,然后简单地使用:
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() { ... } ;
您是否在您的index.html中包含'cordova.js'脚本?你需要它用于'deviceready'事件。因此,为了避免与每个脚本的加载顺序有关的奇怪问题,将它导入您的头部非常重要。 – jms
这是我的代码中的问题之一。我找到了解决方案,并尽快更新。感谢所有...... –