【发布时间】:2017-12-09 23:14:46
【问题描述】:
在下面的代码中,当点击任何标签时,我正在淡出任何页面,然后淡入新页面。但是,在某些情况下,我们不想让页面在点击时淡出,例如,当标签设置为通过target="_blank" 从外部打开时。下面的代码反映了这一点并且正在成功运行。
但是,我不确定如何实现的一件事是,当链接包含 mailto: 引用时防止淡出,因为显然这是为了打开邮件客户端窗口而设计的。因此我不希望页面淡出?
谢谢。
$(window).bind("pageshow", function(event) {
if (event.originalEvent.persisted) {
window.location.reload();
}
});
(function($) {
if (window.history) {
$(window).on('popstate', function() {
$("body").show();
});
}
// When links are clicked
$(document).on("click", "a", function() {
var $link = $(this);
var $href = $link.attr("href");
var $target = $link.attr("target");
// If link exists
if ($href) {
// Fade out all links unless set to open in external window target="_blank"
if ($target !== "_blank") {
$("body").fadeOut(250, function() {
history.pushState($href, null, null);
window.location.href = $href;
});
return false;
}
}
});
// On page load, fade in
$(document).ready(function() {
$("body").fadeTo(250, 1);
});
}(window.jQuery));
【问题讨论】:
-
如果没有很多链接,我很想推荐,在你不想淡出的链接上放置一个“外部”类。然后您的委托匹配器将更改为
.on('click', 'a:not(.external)', ...) -
嗨@Taplar - 网站上有很多链接,所以寻找更通用的东西,而不仅仅是一个类名。谢谢。
-
詹姆逊下面的解决方案有效地完成了我的建议,而不需要额外的课程。
标签: javascript jquery mailto