我有一个Android应用程序,它正在与一个网站接口(我无法控制),我可以通过将不同的Javascript或jQuery脚本加载到我的WebView来实现这一点。我的任务之一是让我的应用程序检测网站中的对话框何时显示和关闭。到目前为止,我已经能够检测到对话框是否通过这个脚本显示(适用于桌面和移动模式):
$(".ui-link").click(function() {
Android.dialogOpened(); // function in my Android app
});
并通过此脚本按下对话框的X按钮来检测对话框是否关闭(适用于桌面和移动模式):
$(".ui-btn-left.ui-btn.ui-shadow.ui-btn-corner-all.ui-btn-icon-notext.ui-btn-up-f").on("tap", function() {
Android.xBtnClicked();
});
通过在我的电脑上摆弄控制台(仅限桌面模式),我还可以通过单击对话框外部来检测对话框何时关闭。
// popupDialog-screen is the ID of the space outside the dialog
$("#popupDialog-screen").click(function(){
alert('clicked outside'); // or the Android function
});
但是,当我尝试使用我的移动设备(或在控制台中更改为移动模式)时,上面的脚本不起作用!我还尝试过使用不同类或div的各种其他脚本,也尝试过使用.on('tap')代替click,以及许多其他方法,但到目前为止都没有成功。
这是我第一次使用Javascript和jQuery,所以我对网站的代码不太了解。如果有帮助的话,我看到它使用Tapestry,我看到了显示弹出窗口的代码,但没有看到它在哪里关闭。以下是我发现的代码(我没有做这个):
// dialoglink.js
(function( $ ) {
T5.extendInitializers(function(){
var bindElements = [];
function init(spec) {
var elementId = specs.triggerId;
if ( $.inArray(elementId, bindElements) === -1 ) {
bindElements.push(elementId);
$('#' + elementId).click(function(e) {
e.preventDefault();
jQuery('#' + spec.dialogId).popup('open');
return false;
});
}
}
return {
dialogLink : init
};
});
}) ( jQuery );
你认为问题出在哪里?我已经做了好几个小时了。谢谢
终于开始工作了!
在jQuery mobile中搜索了有关弹出窗口的信息,并使用了afterclose事件。这是工作脚本:
$('#popupDialog').popup({
afterclose: function( event, ui ) {alert('CLOSED')}
});
来源:http://api.jquerymobile.com/popup/#event-后关闭