2

科尔多瓦 2.0.0

正如预期的那样,以下 API 调用在 Chrome 浏览器上不起作用;

navigator.app.exitApp();

我越来越

TypeError:无法调用未定义的方法“exitApp”

我的代码只是包含cordova-2.2.0.js文件。没有对 PhoneGap 采取进一步行动。

在移动设备上,此 API 调用确实有效

所以我猜我应该采取一个额外的步骤来抽象这种API函数???也许某种“要求”电话?

编辑#1:
我认为这还不够清楚:我希望 Cordova 能够抽象出这种 API,以便即使不真正可用(即不是在真实设备下而是在 Chrome 下),这些调用也不会做任何事情(特别是exitApp)。

另外 - 我可以navigator在 Chrome 检查中看到对象,它是CordovaNavigator.

4

3 回答 3

4

好吧,您正在尝试在 chrome 上使用 cordova 本机调用,这当然不会运行,cordova 本机调用是为了访问本机移动功能,而 Chrome 不能模拟。

另外我建议您始终使用最新的稳定版本,cordova 已经在 2.8 版上

您可以使用 chrome 插件波纹模拟器在其上测试科尔多瓦应用程序,但它仍然不支持一些科尔多瓦功能:http ://emulate.phonegap.com

于 2013-06-11T10:45:30.957 回答
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

其次,您可以修复ripple 以防止该特定错误,即使在使用cordova 3.0 时ripple 得到了很大改进,该错误仍然存​​在。这是我在所有安装过程之后所做的: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',function(ripple,exports,module){”在我下载的第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.");
        }
    }
};

我在应用程序试图退出的控制台中收到反馈。你可以做一些对你有用的事情。我认为新的涟漪值得安装它。从那里,您可以自己修复它,甚至提供有用的解决方案。

更新:exitApp 和 overrideBackbutton 都已添加到涟漪中(在上面提到的代码中的同一位置)。请参阅此链接:添加 App.exitApp 和 App.overrideBackbutton 方法支持

于 2014-04-05T00:33:32.983 回答
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>
于 2015-06-24T07:02:43.200 回答