【发布时间】:2019-02-27 16:07:50
【问题描述】:
我有一个包含此正文的页面:
<body>
<div class="loading">
<div class="loader"></div>
</div>
<div class="site-content">
[... all the content]
</div>
</body>
我正在使用此代码显示/隐藏微调器
function unLoader(e) {
$(".site-content").hide();
$(".loading").show();
}
$(window).on('load', function() {
$(".loading").hide();
$(".site-content").show();
window.onbeforeunload = unLoader;
});
问题是微调器可以在 PC 和 mac 的桌面、safari、firefox、chrome 等上运行...
但它在我的 Iphone 上不起作用。
另一方面,我正在使用微调器进行 ajax 调用:
var $loading = $('.loading').hide();
$(document)
.ajaxStart(function () {
$loading.show();
})
.ajaxStop(function () {
$loading.hide();
});
但这一次微调器可以在移动设备(iphone)上运行!
如何使微调器在我的所有页面中都适用于移动设备(使用首先显示的代码)?
我知道问题出在onbeforeunload 事件
提前致谢。
EDIT1:回答 josh 的评论,我什至试过这个:
var isOnIOS = navigator.userAgent.match(/iPad/i)|| navigator.userAgent.match(/iPhone/i);
var eventNameHide = isOnIOS ? "pagehide" : "beforeunload";
var eventNameShow = isOnIOS ? "pageshow" : "load";
$(window).on(eventNameShow, function(){
$(".loading").hide();
$(".site-content").show();
window.addEventListener(eventNameHide, function(e) {
$(".site-content").hide();
$(".loading").show();
});
});
【问题讨论】:
-
您是否尝试过更新的等效项
addEventListener('beforeunload', unLoader)? -
它是原生的等价物,jQuery 早于它。所以,是的,我会说这是一个“较新的等价物”。
-
没人知道吗?有关信息,甚至微软在这里也有这个问题:marketplace.visualstudio.com iphone 上没有微调器,而桌面上有微调器...
标签: javascript jquery ios dom