当前位置:  开发笔记 > 编程语言 > 正文

Phonegap 3包含一个警告框,其中"OK"崩溃浏览器

如何解决《Phonegap3包含一个警告框,其中"OK"崩溃浏览器》经验,为你挑选了2个好方法。

我无法对此提出一个很好的解释,但是当我加入时


在我没有修改的Phonegap应用程序中,屏幕上会出现2个弹出窗口.

//The first popup
gap:["PluginManager","startup","PluginManager224542697"]

//the second
gap:["App","show","App224542698"]

我必须取消两个弹出窗口,并且真的很想理解这个推理.

有问题的两行是在phonegap.js的21117和21118行

 // Tell the native code that a page change has occurred.
 require('cordova/exec')(null, null, 'PluginManager', 'startup', []);
 require('cordova/channel').onNativeReady.fire();

这当然不会在应用程序中破坏,但它确实意味着开发几乎是不可能的.



1> antscode..:

对我来说问题出现了,因为在phonegap之外运行时,phonegap.js回归到基于PROMPT的模式.我相信这种模式适用于Android 3.2以下的手机屏幕,其中所有通信都是通过警报提示(这就是你所看到的).

我通过在加载phonegap.js之前设置以下变量来解决问题:

window._cordovaNative = true;

这会让你认为自己在电话号码3.2以上运行,因此永远不会进入提示模式.

当然,如果您的目标设备低于3.2,那么这样做可能会破坏与这些设备上的Phonegap的所有通信......



2> Yauhen Yakim..:

在尝试以下操作时,我偶然发现了这个错误和问题:

cordova create等完成了hello world教程.

在仿真器和连接的设备上部署没有问题.

我在执行操作时遇到了与OP相同的错误cordova serve,只是按照指示导航到// localhost:8000.

我同意 - 看到这些警报非常烦人.它杀死了快速非本地js开发的全部要点.

出了什么问题?

具有"设备"的通信API将回退到此处理程序promptbasednativeapi.js(另请参阅cordova-js/src/android/exec.js).在版本3.xx上说

window._cordovaNative = true;

对我来说还不够.人们应该实施整个通信协议.

快速解决方案

您可以使用某些浏览器端"模拟器",例如用于chrome的Ripple模拟器扩展([更新]考虑使用https://github.com/apache/incubator-ripple for phonegap 3.xx,如DuKes0mE所指出的那样).这样的"模拟器"可以理解并触发相应的事件,例如"设备就绪".到目前为止看起来很有希望:-)

到底是怎么回事?

@antscode的答案非常有帮助.经过一些挖掘和阅读cordova/cordova-js代码后,我发现了这一点

错误来自作为cordova插件架构一部分的机制.插件被开发为所谓的cordova命令,可以从js执行 - 这正是cordova架构的组织方式.

Cordova是一个JS框架.建议使用一个主要的(非本机)JS代码.要与所有这些不同的本机插件交谈,必须提出与它们通信的协议,使用JSON序列化的RPC.这正是自己的想法.

插件也可以是纯JS.引用手册

使用以下命令创建一个新的echome插件:

window.echo = function(str, callback) {
    cordova.exec(callback, function(err) {
        callback('Nothing to echo.');
    }, "Echo", "echo", [str]);
};

通过JS访问它作为cordova命令:

 window.echo("echome", function(echoValue) {
        alert(echoValue == "echome"); // should alert true.
    });
没有模拟器解决方案

我可以想象一个相当复杂的应用程序会在这样的Web浏览器客户端"模拟器"内部(仅在其中)中断的情况.一个更好的解决方案是找出一种方法来说服应用程序不要回退到PROMPT通信方法(产生恼人警报的方法).好吧,我现在没有这样的解决方案:-(很乐意学习如何做到这一点.

解决方案在这里:https://gist.github.com/ewiger/7d5e0cc8fccf311e9ce2

推荐阅读
刘美娥94662
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有