1

我的代码有一个非常奇怪的问题——它在除 IE10 之外的所有浏览器中都能正常工作。它在 IE8 和 9 中运行良好。

当单击按钮时,该代码会导致页面上出现叠加层(类“.modal”)。

但是,在 IE 10 中,当单击按钮时,覆盖会从短暂的一秒开始出现,然后浏览器导航到空白页面。

代码如下 - 不幸的是,我无法提供小提琴或 HTML,因为链接来自内部公司测试环境。正因为如此,我希望更多人遇到类似的问题,即 IE 10 的行为与 IE 9 不同,因为下面代码中的任何可疑之处。任何想法表示赞赏,我整天都在尝试。

我想知道最初的 e.preventDefault 是否有问题,并将其替换为 e.preventDefault ?e.preventDefault() : e.returnValue = false; 但那里没有运气。

/* Overlay links - open a modal window */
$('.modal').live('click', function (e) {
    var link = $(this).attr('href');
    e.preventDefault();
    popUp(link + '&ajaxFetch=true');
});


/* Popup overlay */
function popUp(link) {
//alert works here
$.fn.colorbox ({
    href: link + "&ajaxOverlay=true",
    initialWidth: 800,
    width: 800,
    maxHeight:500,
    transistion: "elastic",
    rel: "nofollow",
    title: true,
    scrolling: false,
    fixed:true,
    close: "Close this window",
    onComplete: function () {
        $('<a href="#" class="cboxClose">Close</a>').appendTo('.overlayContainer .buttonsContainer');
        popUpShowRelevantSectionFromId(link);
        $('.overlayContainer').jScrollPane({keyboardSpeed:10,animateScroll: true});
        //Adding gradient divs to overlay window
        if($("#cboxLoadedContent").length){
            $(".overlayContainer").append("<div class='gradientTop'></div>");
            $(".overlayContainer").append("<div class='gradientBottom'></div>");
        }
    }
});
}

//I'm just adding the rest in for completeness - at this point the new window has already opened and the white screen appeared.

/* Popup overlay - show only relevant section (using "id" in querystring) */
function popUpShowRelevantSectionFromId(url) {
var sectionId = "#" + getQueryStringValueFromQueryStringKey(url, "id");
if ($(sectionId).length) {
    //reSizePopUp(sectionId);
    showOnlyRelevantSection(sectionId);
    s.pageName = pagename_substeps+':'+getQueryStringValueFromQueryStringKey(url, "id");
    s.t();
   }
}

    /* Popup overlay - popUpShowRelevantSectionFromId - helper returns query string value     from a specified url for a specified key */

function getQueryStringValueFromQueryStringKey(url, key) {
var queryStringValue;
var urlSections = url.split("?");
if (urlSections.length == 2) {
    var queryStringItems = urlSections[1].split("&");
    key = key + "=";
    $.each(queryStringItems, function (index, queryStringItem) {
        if (queryStringItem.indexOf(key) > -1) {
            queryStringValue = queryStringItem.split("=")[1];
            return;
        }
    });
}
return queryStringValue;
}
4

0 回答 0