Android-jQuery无法检测弹出对话框何时关闭

时间:2016-01-07 11:31:47

标签: javascript jquery dialog android-webview

我有一个与网站连接的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 );

您认为这是什么问题?我已经在这几个小时了。谢谢!

1 个答案:

答案 0 :(得分:0)

终于开始工作了!

搜索jQuery mobile中的弹出窗口并使用了后关闭事件。 这是工作脚本:

$('#popupDialog').popup({
  afterclose: function( event, ui ) {alert('CLOSED')}
});

来源:http://api.jquerymobile.com/popup/#event-afterclose