jQuery Modal Dialog, ie6 безопасная небезопасная ошибка, https ssl - PullRequest
1 голос
/ 15 июля 2011

(Пожалуйста, не спрашивайте, почему мы поддерживаем ie6.)

Мы создаем пользовательские предупреждения / подтверждения с помощью модального диалога jQuery. Я создал div с помощью xsl (в примерах я вынул часть xsl и поместил в raw html, чтобы избежать путаницы). Div запускается с помощью jQuery. Я написал пару функций (которые по существу открывают диалог, передают сообщение и функцию), чтобы мы могли реализовать новое оповещение / подтверждение, используя javascript (по сути, заменяя alert (); на uiAlertError ();).

Часть этой информации не важна. Я могу получить более конкретную информацию, но главная проблема заключается в том, что в ie6 я получаю сообщение «Эта страница содержит как безопасные, так и незащищенные элементы. Хотите ли вы отображать незащищенные элементы?» ошибка. В ie7, ie8, firefox, safari и chrome все работает правильно.

Из того, что я прочитал, есть некоторые распространенные проблемы, такие как: http: // необходимо быть https: // (или http: // to //, изменить на относительное, а не на абсолютное), 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.

Эта страница не является общедоступной.

Спасибо за помощь! Tony

Ответы [ 2 ]

0 голосов
/ 15 ноября 2012

Я думаю, что проблема такая же, как у моего в другом вопросе - в 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 данных, но любые такие строки base 64 обрабатываются IE как незащищенный ресурс.

Заменить эту строку на:

background-image:url(blank.gif);

Где blank.gif - прозрачный GIF 1x1, и ошибка исправлена!

Похоже, что ребята из jQuery UI знают о проблеме , и она исправлена ​​в 1.9 и выше.

0 голосов
/ 31 января 2012

У меня та же проблема при работе с jquery и xslt + ajax на IE6.

Проблема в уничтожении.Поместите предупреждение (1) перед уничтожением и предупреждение (2) после него, и вы увидите, что смешанная защита происходит между.

В моем коде это выглядит примерно так:

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

Я все еще ищу лучший способ избавиться от диалога, так как я использую ajax, на странице сохраняется #box, а затем у вас есть 2 экземпляра #box, если они не расположены должным образом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...