我尝试使用自定义网址方案打开一个cordova应用程序。
当我在触发事件后使用它时,它的工作原理如下:
<input id="myInput" onkeydown="checkKey(event);"/>
function checkKey(event) {
if (event.which == 13 || event.keyCode == 13) {
window.open('blablabla'); // call the App
}
};
不幸的是,在我的情况下,通过按 Enter-键,必须由后端系统检查该值,然后重新加载页面。
所以我试了这个:
document.addEventListener('DOMContentLoaded', function() {
window.open('blablabla'); // call the App
}, false);
这里的问题是没有活动事件,所以 chrome 会进行导航。block 应用程序无法打开。
有没有办法通过重新加载页面来不丢失事件?
为什么不:
- 防止按回车键时的默认行为
- 通过 AJAX 发送值
- 获取响应
- 打开应用程序
- 列表项
结论:
- 问题已解决
- 无需重新加载页面
- 更快的最终结果
您可以使用ondeviceready
事件代替DOMContentLoaded
事件。在这种情况下,在初始页面(索引页)onDeviceReady()
上,您可以进行验证并在此之后调用应用程序的第一页。
我们通常在将用户定向到应用程序主页之前对登录页面执行此操作。例如-
document.addEventListener("deviceready", onDeviceReady, false);
function onDeviceReady() {
//get the value
//check event through backend system
window.open('blablabla'); //call the App's first page
}
引用自[deviceready][1]
文档 -
设备就绪事件的行为与其他事件略有不同。在 deviceready 事件触发后注册的任何事件处理程序都会立即调用其回调函数。