[英]how can i prevent onbeforeunload from firing when a certain condition is met?
[英]How to prevent “onbeforeunload” from firing when clicking a telephone number?
我有一个响应式Web应用程序,我希望用户能够单击电话号码对其进行拨号。
此外,在页面加载过程中,我想显示"Please wait while loading..."
。
要获取"Please wait while loading..."
以在页面加载时显示,我具有以下javascript代码
$(function () {
// #Waiting is visible by default, when the page finish loading, hide the loading
$("#Waiting").fadeOut(500);
window.onbeforeunload = function () {
// When a user navigates away, show the loading
$("#Waiting").fadeIn(500);
};
});
从上面的代码中,您会注意到默认情况下“加载”页面是可见的。 页面加载完成后,我将其淡出。 此外,当页面卸载时,我将显示“正在加载”页面,直到重定向用户为止。
直到用户单击“单击呼叫”按钮,以上代码才能正常工作。 当前,当用户单击“单击通话”按钮时,“加载”页面显示出来,并且永远不会消失。
由于“点击通话”实际上并未使用户离开页面,因此我想防止触发onbeforeunload
事件,该事件阻止显示“正在加载”页面!
这是我的HTML标记
<body>
<div id="Waiting">Please wait while loading...</div>
<a href="tel:+1-800-123-4567" class="btn btn-lg btn-danger btn-block click-to-call">
<strong>Call Now</strong>
</a>
</body>
单击单击通话按钮时,如何防止onbeforeunload
触发?
看来您可以访问引起onbeforeunload
从event.target.activeElement
触发的元素
您应该能够将onbeforeunload
处理程序编辑为以下内容。
window.onbeforeunload = function (event) {
if (event && event.target && event.target.activeElement && event.target.activeElement.tagName.toLowerCase() === 'a' && event.target.activeElement.href.indexOf('tel:') > -1) {
return;
}
// When a user navigates away, show the loading
$("#Waiting").fadeIn(500);
};
上面的代码评估活动元素。 如果active元素是带有包含tel:
的href
的链接,则我们不执行任何操作或不显示Waiting
元素。
这就是我用来实现该功能的方式。 仅当单击例外元素(在您的情况下,此电话链接)时,我才更改有效值。
var valid = false;
window.onbeforeunload = function() {
return valid?undefined:"";
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.