我有一个正在开发的网站,通过AJAX加载新页面而不是传统的页面加载。网站上的大多数链接都将使用AJAX加载新页面,但是我需要从这种行为中排除一些链接。例如,本地哈希链接只是将您向下滚动到同一页面上的锚点。或者,链接到本地托管但显然不能通过AJAX加载的PDF文件。我对HTML有足够的控制权,我可以简单地将类添加到我想要排除的链接中,例如.local-anchor或.pdf。如果您是第一次直接加载页面,我有效地排除了这些链接的代码,但是无论何时通过AJAX加载页面,我的排除都不再有效。 .local-anchor链接和应该被排除的任何其他链接仍然以某种方式执行AJAX函数。相关JS代码的示例:
$(document).on("click", "a:not('.local-anchor, .pdf')", function(e) {
var href = $(this).attr("href");
// check that it points to this domain
if ( href.indexOf(document.domain) > -1 || href.indexOf(':') === -1 ) {
history.pushState({}, '', href);
loadPage(href);
e.stopPropagation();
e.preventDefault();
}
});
您可以在此处查看此实时页面(正在开发中): http://dma.nz/practice/
链接:
我们的设计方法
建筑过程
奖项+出版物
接触
将您滚动到同一页面下方的锚点,应将其排除在外。然而,如果这个页面是通过AJAX加载的(通过导航到右上角的其他主要导航链接之一进行测试然后返回实践),那么这些链接会触发AJAX重新加载同一个页面,这会搞砸了。
我如何修改此JS以确保它们始终被排除?