仅针对IE的JQuery对话框中的Iframe问题

时间:2012-06-29 14:04:33

标签: jquery asp.net iframe jquery-ui-dialog

我的asp.net Web应用程序面临非常严重的问题,我在其中开发了一个页面,并在Jquery对话框中使用iframe加载该页面。因为当我试图在IE中打开它然后在我进行研究后发现对于IE我们需要在打开对话框之后根据此{{3}分配iframe src时,我得到错误相关的'未定义对象'和许多后续错误我在IE中打开时得到了解决方案,现在我在尝试关闭popup.final代码时会遇到同样的错误。

<link href="../../App_Themes/Default/jquery-ui.css" rel="stylesheet" type="text/css" />  
    <script src="../../Scripts/jquery.min.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery-ui.min.js" type="text/javascript"></script>
    <script src="../../Scripts/jquery.preload.js" type="text/javascript"></script>
    <script type="text/javascript" src="../../Scripts/js/ui/ui.core.js">

 <script language="javascript" type="text/javascript">
function openDialog() {

            var $dialog = jQuery('#dialog');
            $dialog.dialog({
                autoOpen: false,
                resizable: false,
                title: 'Register App',
                modal: true,
                height: 500,
                width: 950,
                show: 'puff',
                hide: 'puff',
                close: function (event, ui) {
                    $('#iframeManageApp').attr('src', 'about:blank');
                    $dialog.dialog('close');
                    $dialog.dialog('destroy');
                    if (isReload) {
                        if (isAdd)
                            $("#" + '<%=hdnIsApplicationAdd.ClientID %>').val("true");
                        else
                            $("#" + '<%=hdnIsApplicationAdd.ClientID %>').val("");

                        window.location.reload();
                    }

                },
                open: function (event, ui) {
                    $('#iframeManageApp').attr('src', 'RegisterApplication.aspx');
                }
            });

            $dialog.dialog('open');
        }
    </script>

对话框div如下所示

<div id="dialog" style="display: none; padding-left: 10px; overflow: hidden;">
        <iframe id="iframeManageApp" height="450px" width="910px" 
            frameborder="0" style="overflow: hidden;"></iframe>
    </div>

如果有人确实找到了这类问题的解决方案,请帮助我。对于这个问题,IE应该有什么问题?还建议我,如果有人有替代解决方案。

先谢谢。

更新

经过一些研究后我发现这是问题,因为iframe页面内的js引用也相同。我刚刚更改了Test.aspx而不是RegisterApplication.aspx页面,IE中没有错误,但是当我在其中添加了相同的js时,就会出现同样的行为!

<script src="../../Scripts/jquery.min.js" type="text/javascript"></script>

1 个答案:

答案 0 :(得分:3)

我已经通过对话框选项中的一些更改自行解决了这个问题,但找不到发生这种情况的真正原因?

我已从对话框和对话框的最终代码中删除了hide ='puff'选项,如下所示

        $dialog.dialog({
            autoOpen: false,
            resizable: false,
            title: 'Test',
            modal: true,
            height: 500,
            width: 950,
            show: 'puff',
            close: function (event, ui) {
               -----
               -----

我认为在关闭事件中它会尝试找到jquery.min.js的隐藏效果,它应该是我的问题的原因。但是,如果有人想重现这个东西,那么你可以通过以下方式来实现它

1)根据我的问题打开对话框代码(在关闭事件中忽略重新加载部分)
2)创建另一个测试页面并在其中添加jquery.min.js的引用 3)在javascript的opendialog函数中加载iframe里面的测试页面