我的代码有一个非常奇怪的问题——它在除 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;
}