设备何时准备就绪,以及如何应用从中获得的变量
When does ondevice ready happen, and how can I apply variables I get from it?
在我的Phonegap Android应用程序中,我有以下Javascript代码:
function onDeviceready()
{
window.plugins.webintent.getUri(function(url)
{
alert("WebIntent Fired Up! URL is " + url);
if (url.substring(0, 37) === "https://xxxxxxx.com/confirmation.html")
{
alert("intent matched!");
var params = url.substr(url.indexOf("?") + 1);
params = params.split("&");
var verificationData = params[0].split("=");
var emailData = params[1].split("=");
launchLinkEmail = emailData[1];
launchLinkVerification = verificationData[1];
alert("verification is " + launchLinkVerification);
alert("email is " + launchLinkEmail);
}
});
}
$(document).ready(function() {
document.addEventListener('deviceready', onDeviceready, true);
});
问题是,变量launchLinkVerification
和launchLinkEmail
似乎是在页面加载和Javascript完成后设置的,所以当我试图在任何我想使用它们的地方调用它时,它们的值都是空的。警报总是显示我想要的信息,但如果我试图在HTML页面中的任何位置显示它们,或者根据它们的值设置条件,则两者都不起作用。
另一方面,如果我在onDeviceready
之外的任何地方使用window.plugins.webintent.getUri(function(url)
,它有时根本不会执行(或者至少在我可以预测或理解的条件下不会执行),而且变量也不会设置。
最后,我想做的是:
从WebIntent捕获的URL获取数据。
如果WebIntent中的数据符合某些条件,则使用
window.location = confirmation.html
切换到另一个页面用我从WebIntent获取的URL中获得的两个变量填充
confirmation.html
上表单的两个字段。
如何从Webintent调用获取数据,根据数据切换页面,然后在新页面上使用该数据?
我没有专门使用WebIntent插件,但如果我正确理解你的描述,我认为你遇到了一个问题,你在头部或身体中运行了一些JavaScript,以按照你想要的方式配置页面。但代码取决于onDeviceready()中发生的事情。对onDeviceready()的调用将在PhoneGap感觉准备就绪的任何时候异步进行。通常它被称为快速,但快速是一个相对术语。
您可能需要的是这种异步代码触发您想要的代码的方法。JQuery提供了$.Deferred()对象,您可能会觉得它很有用。您可以设置Deferred,使用Deferred.done()添加其他代码,当它在Deviceready()上运行时,解析对象,然后运行回调。
http://api.jquery.com/jQuery.Deferred/
我用它来允许像onDeviceready()这样的东西在我的应用程序中触发一系列其他行为,我可能不想将这些行为构造成一个大函数。
- 在索引.html和应用.js [node.js] 之间共享变量
- jQuery在MVC应用程序中设置JS变量
- 在变量中保存值的最佳方法是在应用程序关闭后使用,然后使用apachecordova在android中重新启动
- 在私有函数Node.js的函数中应用变量
- 将 var 的值应用于加载页面中的另一个变量
- Angular:如何在外部浏览器中打开Angular变量-appgyver混合应用程序
- 同构JS应用程序中的环境变量:Webpackfind&代替
- Ember全局应用程序变量
- 局部变量在应用 function.call() 后变为全局变量
- 如何创建一个只应用了一些过滤器的局部变量
- 选中的Angular HTML列表将所选值放入应用程序范围的变量和跨度中
- 初始化变量时对其应用监视
- 将变量从HREF传递到Google HTMLSERVICE应用程序
- Javascript中应用的jQuery JSON数据库变量
- 在前端测试 react + redux 应用程序时忽略与浏览器相关的变量
- 如何将文本框中的值存储到 asp.net vb.net 应用程序中的 JavaScript 变量中
- 将 CSS 属性应用于具有 JS 中变量的图像
- 将 java 变量从 Android 活动传递到 phonegap 应用程序中的 javascript
- js应用变量数据没有显示在视图中,即使日志显示它
- 如何在JavaScript中应用变量作为元素ID ?