Worklight 或 jQuery Mobile 意外抛出“pagechange”事件
Posted
技术标签:
【中文标题】Worklight 或 jQuery Mobile 意外抛出“pagechange”事件【英文标题】:“pagechange” event unexpectedly thrown from either Worklight or jQuery Mobile 【发布时间】:2014-04-11 10:32:00 【问题描述】:我正在开发基于IBM Worklight 6.1
和jQuery Mobile 1.4
的单页Hybrid/Cordova
应用程序。
在我的主页上,我有一个显示密码输入和登录按钮的弹出框。 当我点击登录按钮时,jQuery 方法(如下所示)捕获登录事件并将我带到管理工具页面,正如我所料。
到目前为止一切顺利,但突然从 Worklight (wljq.js) 或 jQuery Mobile (jquery.mobile-1.4.0.js) 引发了一个新的“pagechange”事件,我被踢回了主页页。
谁能帮我弄清楚发生了什么?
$('#adminToolsLoginButton').on('tap', function()
var password = $('#adminToolsPasswordInput').val();
if (password === adminToolsPassword)
$( ":mobile-pagecontainer" ).pagecontainer( "change", "#adminTools", );
else
WL.Logger.debug('Wrong admin password');
alert('Wrong admin password');
$( ":mobile-pagecontainer" ).pagecontainer( "change", "#myHome", );
);
最好的问候, 马格努斯。
【问题讨论】:
按钮是<a>
、<button>
还是<input>
?欢迎来到 SO :)
我没有看到支持 jQuery Mobile 1.4,这意味着它没有经过测试:publib.boulder.ibm.com/infocenter/prodguid/v1r0/clarity-reports/…
是什么让你认为这个事件是由 wljq.js 抛出的?
我还建议通过创建一个仅模仿您正在尝试做的事情的新应用程序来简化这一点 - 基本上在页面之间移动,看看您是否能够重新创建它。如果是,要么看看它现在是什么问题,因为它是孤立的,和/或通过保管箱分享这个测试用例。
【参考方案1】:
感谢您的反馈。
问题现在解决了!
问题与 jQuery Mobile 弹出窗口小部件有关,它想让我回到它所在的页面并从中打开它。这可能是一个错误吗?
我通过使用'afterclose'事件解决了这个问题,如下所示:
var isLogin = false;
$('#adminToolsLoginButton').on('tap', function()
var password = $('#adminToolsPasswordInput').val();
if(password === adminToolsPassword)
isLogin = true;
else
isLogin = false;
WL.Logger.debug('Wrong admin password');
alert('Wrong admin password');
);
$( "#popupAdminLoginDialog" ).on( "popupafterclose", function( event, ui )
if(isLogin)
$( ":mobile-pagecontainer" ).pagecontainer( "change", "#adminTools", );
isLogin = false;
);
【讨论】:
以上是关于Worklight 或 jQuery Mobile 意外抛出“pagechange”事件的主要内容,如果未能解决你的问题,请参考以下文章
Worklight - jquery mobile |如何检查用户是不是在pagebeforeshow中登录?
如何将 jquery mobile 添加到现有 Worklight 6.2 项目
jQuery Mobile UI 无法与 IBM Worklight 一起正常工作
IBM Worklight 6.0 - 富页面编辑器不加载 jQuery Mobile CSS
IBM Worklight 6.0 - 默认情况下是不是包含 jQuery Mobile?
IBM Worklight 6.0.0.1 - JavaScript 未在 jQuery Mobile 多页应用程序中执行