jQuery模态对话框,ie6安全非安全错误,https ssl

时间:2011-07-15 15:47:39

标签: jquery security dialog modal-dialog

(请不要理会我们为什么支持ie6。)

我们正在使用jQuery模式对话框创建自定义警报/确认。我用xsl创建了一个div(在示例中,我将一些xsl输出并放入原始html以避免混淆)。 div使用jQuery触发。我编写了几个函数(基本上打开对话框,传递消息和函数),这样我们就可以使用javascript实现新的alert / confirm(基本上替换alert();使用uiAlertError();)。

其中一些信息并不重要。我可以更具体,但这里的主要问题是在ie6中我得到一个“此页面包含安全和非安全项目,你想显示不安全的项目吗?”错误。一切都在ie7,ie8,firefox,safari和chrome中正常工作。

从我读过的有一些常见的问题,例如:http://需要是https://(或http://到//,改为相对于绝对),src是空的所有这些(从我收集的内容)的基本主题是让事情加载安全,因为我们在一个安全的页面上。但这不是我的问题!

我已经将问题分解为与jQuery有关的事情(我测试了新代码;得到了错误。将新代码注释掉;错误消失了。我取消注释了xsl,但是留下了jQuery注释掉了;错误仍然消失。回过头来评论jQuery,错误又回来了。)

这是javascript:

以下是我为替换alert()而编写的函数; :

function uiAlertError(msg, ok_func){
    document.getElementById('alert_id_img').src="images/dialog_warning.png";
    uiAlert(msg, ok_func);
}
function uiAlertCheck(msg, ok_func){
    document.getElementById('alert_id_img').src="images/dialog_check.png";
    uiAlert(msg, ok_func);
}
function uiAlert(msg, ok_func){
    document.getElementById('alert_id_msg').innerHTML = msg;
    $("#alert_id").dialog("open");

    $("#alert_ok").click(function(){
        if(ok_func == undefined || ok_func == ''){
            $("#alert_id").dialog("close");
        }else{
            eval(ok_func);
            $("#alert_id").dialog("close");
        }
    });
}

这是jQuery:

$(function() {
    $("#alert_id").dialog( "destroy" );

    $("#alert_id").dialog({
        width: 325,
        modal: true,
        resizable: false,
        draggable: false,
        minHeight: 90,
        autoOpen: false
    });
});

我确定它与我的jQuery实现或jQuery本身有关。

此页面未公开托管。

感谢您的帮助! 贝

2 个答案:

答案 0 :(得分:0)

我在IE6上使用jquery和xslt + ajax时遇到同样的问题。

问题在于破坏。在销毁之前发出警报(1)并在其之后发出警报(2),您将看到混合安全发生在它之间。

在我的代码中,它看起来像这样:

    $("#box").dialog("close");
    alert(1);
    $("#box").dialog('destroy').remove();
    alert(2);

我仍然在寻找一种更好的处理对话框的方法,因为我使用的是ajax,页面会保留#box,如果没有正确处理,你会有2个#box实例。

答案 1 :(得分:0)

我认为问题与我的one in another question一样 - jQuery UI 1.8 CSS中存在一个错误:

.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block;
    /* http://bugs.jqueryui.com/ticket/7233
     - Resizable: resizable handles fail to work in IE if transparent and content overlaps
    */
    background-image:url(data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=);
}

IE6和7不仅不支持数据URI,而且任何此类基本64字符串都被IE视为非安全资源。

将此行替换为:

background-image:url(blank.gif);

blank.gif是1x1透明GIF且错误已修复!

它看起来像jQuery UI人are aware of the issue,并且已在1.9及更高版本中修复。