我们正在开发一款带有Cordova的移动应用程序,其中包含许多插件,并通过Ripple模拟器在Chrome中进行检查。显然,有些插件使用的是Ripple未实现的本机功能,这会破坏Chrome中的部分应用功能。
问题:如何将模拟器功能添加到Ripple?以下是我到目前为止所发现的以及使其工作所缺少的内容。
在控制台中可以看到如下错误:
missing exec:Keyboard.close
ripple.js:40 TypeError: Cannot read property 'close' of undefined
at ripple.define.module.exports.exec (http://localhost:4428/ripple/assets/ripple.js:40:28665)
at Function.Keyboard.close (http://localhost:4428/plugins/com.ionic.keyboard/www/keyboard.js:14:2)
...
在keyboard.js
:
exec = require('cordova/exec');
// Line 14, where from the exception stacktrace
exec(null, null, "Keyboard", "close", []);
通过一些谷歌搜索,很清楚cordova.exec
是Javascript部分和本地后端之间的连接器。我假设,Ripple应该取而代之,而且确实有bridge.js可能正是这样做的。它甚至还有函数add()
,显然是用户提供的模拟器。所以我说,在我的代码中,我应该写一些类似的东西:
var bridge = ripple('platform/cordova/2.0.0/bridge');
bridge.add(
"Keyboard",
{ close: function () {} }
);
唉,ripple
在应用范围内未定义。这是缺失的部分 - 如何访问ripple
?
答案 0 :(得分:1)
我也遇到了这个问题以及我能想到的所有问题 - 如下所示更改插件的www
部分:
var exec = require('cordova/exec');
// --> here is the start of my code
if (exec.toString().indexOf("emulator") > 0) {
exec = emulation;
}
function emulation(success, fail, service, action, args) {
if (action === "add") {
var options = args[0];
alert("Local Notification added: " + options.message);
}
}
// --> the end of my code
你能说些什么?
可能有人说如何避免这个伎俩。 ))答案 1 :(得分:1)
以下是我的完整解决方案:http://www.badpenguin.org/ionic-keyboard-ripple-emulator
使用 window.parent.ripple 。
close()还不够;你需要模拟 init()和其他功能。