在 setTimeout 内,我正在设置新打开的窗口的位置。为避免弹出窗口拦截器,使用临时本地 URL 打开窗口,然后将位置更改为目标 URL。这适用于所有桌面浏览器,包括 Safari。
然而,在 Mobile Safari 中,新窗口的位置不会更新,直到用户将焦点返回到原始窗口,即临时页面留在原处。
这就是 JavaScript/jQuery 的相关部分的样子:
var self = $(this);
if (self.is("a")) {
var clickEventHandler = function(event) {
event.preventDefault();
if (self.attr("target")) {
var newWindow = window.open('loading.htm',self.attr("target"));
var externalURL=self.attr("href");
setTimeout( function() { newWindow.location=externalURL; }, 100 );
}
}
$(this).bind("click", eventHandler);
}