Cordova 2.0.0
以下API调用无法按预期在Chrome浏览器上运行;
navigator.app.exitApp();
我正在
TypeError:无法调用未定义的方法'exitApp'
我的代码只包含cordova-2.2.0.js
文件。没有针对PhoneGap采取进一步行动。
在移动设备上,此API调用可以正常工作。
所以我猜我还有一个额外的步骤来抽象这种API函数???也许是某种“需要”的电话?
编辑#1:
我认为这还不够清楚:我希望科尔多瓦能够抽象这种API,这样即使不是真的可用(即不是在真实设备下而是在Chrome下),这些调用会什么都不做(特别是exitApp
)。
此外 - 我可以在Chrome检查中看到navigator
对象,其类型为CordovaNavigator
。
答案 0 :(得分:4)
好吧,你正试图在chrome上使用cordova原生调用,当然不会运行,使用cordova原生调用来访问原生移动功能,Chrome不会模仿。
另外,我建议您始终使用最新的稳定版本,cordova已经在2.8版本上
你可以使用chrome插件涟漪模拟器测试其上的cordova应用程序,但它仍然支持一些cordova功能:http://emulate.phonegap.com
答案 1 :(得分:1)
这个答案依赖于纹波仿真器,尽管你可能想要一个更通用的解决方案。
两件事。首先,涟漪是新的和改进的,但它仍然有这个错误。您可以看到这篇文章:http://www.raymondcamden.com/index.cfm/2013/11/5/Ripple-is-Reborn并按照链接从github获取新的涟漪:https://git-wip-us.apache.org/repos/asf?p=incubator-ripple.git;a=blob_plain;f=README.md;hb=HEAD
其次,您可以修复纹波以防止出现特殊错误,即使使用cordova 3.0进行了大幅改善,纹路仍然存在。这是我在所有安装过程后所做的事情: 1)找到ripple.js文件;对我来说,它位于C:\ Documents and Settings \ myusername \ Application Data \ npm \ node_modules \ ripple-emulator \ pkg \ hosted \ ripple.js
2)找到这一行" ripple.define(' platform / cordova / 2.0.0 / bridge / app',功能(涟漪,出口,模块){"这是在我的下载#32611行。
3)在该行之后的注释之后,使用现有的show()函数添加exitApp()函数。我用了这段代码:
module.exports = {
show: function (success) {
return success && success();
},
exitApp: function(){
if(console && console.log) {
console.log("Tried to exit app from within ripple.");
}
}
};
我在应用程序试图退出的控制台中收到反馈。你可以做一些对你有用的事情。我认为新的涟漪值得安装它的工作。从那里,您可以自己修复它,甚至可以提供有用的解决方案。
UPDATE:exitApp和overrideBackbutton都被添加到ripple中(如上所述在代码中的相同位置)。请看这个链接:Add App.exitApp and App.overrideBackbutton methods support
答案 2 :(得分:0)
<script type="text/javascript" src="js/jquery-1.10.2.js"></script>
<script src="js/jquery.mobile-1.4.2.js"></script>
<script src="js/cordova.js"></script>
<script>
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
document.addEventListener("backbutton", onBackClickEvent, false);
}
function onBackClickEvent() {
if (navigator.app) {
navigator.app.exitApp();
} else if (navigator.device) {
navigator.device.exitApp();
}
}
</script>