Jquery Message在IE 8上工作而不在IE9上工作

时间:2013-08-03 03:18:15

标签: javascript asp.net jquery internet-explorer-8 internet-explorer-9

代码落后,VB.Net

btnNext.Attributes.Add("onclick", "Confirmation(this,'" +  GetLocalResourceObject("msg").ToString() + "')")

.ASPX Page

    function Confirmation(source, msg) {
    $(source).easyconfirm({ locale: { title: 'Confirm',  text: msg} });
    $(source).click(function() {
        var result = $(source).attr('tag');
        $('#<%=hidField.ClientID%>').val(result);
    });
}

Jquery版本 jQuery的1.4.4.min.js 的jquery-UI-1.8.7.min.js

除此之外,我使用jquery.easy-confirm-dialog来显示此消息框[是/否]。 jquery.easy-confirm-dialog:http://www.projectshadowlight.org/jquery-easy-confirm-dialog/

hidField:参考上面的asp页面的代码

在IE 8上:显示消息框,根据我点击的内容将我带到相应的页面。 [是/否]。在后面的代码中使用 hidField 来获取是/否响应并显示相应的页面。这在IE8中完美运行

在IE 9上消息框没有显示,它将我带到一个页面,就像我点击了没有。 no的 hidField 值为零。因此,如果没有设置值,它会认为我已单击否并执行代码。

我在IE9上调试它,我发现消息显示[仅在调试时],但它不会停止执行代码并等待用户响应然后继续前进。它会在显示消息时继续执行[调试模式,所以我能够看到它]。并且由于 hidField 的默认值为0,因此会重定向到相应的页面。

任何可能发生这种情况的建议/理由。除了我上面提到的以外还有其他原因吗? 任何可能的解决方案

更多信息: 我在IE8上运行了Profiler [F12 IE]并在消息框出现后立即停止它,它显示了event.stopImmediatePropagation被调用。

在IE9上,event.stopImmediatePropagation不是他们在profiler.I中调试过的,在jquery.easy-confirm-dialog.js文件中,IE9 event.stopImmediatePropagation不可用,显示为未定义。

我在1.8.2 [之前的1.4.4]中添加了更高版本的Jquery,但问题仍然是他们的。

1 个答案:

答案 0 :(得分:1)

我不确定你为什么会遇到这个问题,我在http://www.projectshadowlight.org/jquery-easy-confirm-dialog/上用IE9尝试了这些例子,它们按预期工作。但是,您对插件的使用接缝有点奇怪,简单的确认对话框与jQuery绑定事件一起使用时会发挥其魔力。不像您的示例中那样直接从click事件中调用。我建议将所有逻辑移动到像这样的jQuery绑定事件(伪代码)

btnNext.Attributes.Add("class", "confirmation");
btnNext.Attributes.Add("title", GetLocalResourceObject("msg").ToString());

并将其放在标题

中的某个脚本标记中
$(".confirmation").easyconfirm();
$(".confirmation").click(function() {
    var result = $(this).attr('tag');
    $('#<%=hidField.ClientID%>').val(result);
});

或者创建一个显示确认对话框的自定义功能

function Confirmation(source, msg) {
    var dialog = '<div class="dialog confirm">' + msg + '</div>';
    var buttons = {};
    buttons['Yes'] = function() {
        $(this).dialog('close');
        var result = $(source).attr('tag');
        $('#<%=hidField.ClientID%>').val(result);
    };
    buttons['No'] = function() {
        $(this).dialog('close');
    };

    $(dialog).dialog({
        autoOpen: true,
        resizable: false,
        draggable: true,
        closeOnEscape: true,
        width: 'auto',
        buttons: buttons,
        title: 'Are you sure?',
        modal: true,
    });
}