假设我在当前网页上有许多锚链接,其中一些链接指向某些不同的域。
所以我想要的是在移动到不同的域之前向用户显示一个弹出/消息类型的东西。
解决方案1:页面加载后,我们可以将click事件绑定到每个锚链接,当用户点击任何链接时,我们可以检查外部链接并显示消息。
Q1。还有其他优于解决方案1的优化方法吗?
Q2。如何检查链接是否将您带出当前域/指向不同于当前域的链接?
谢谢, 键。
答案 0 :(得分:0)
答案 1 :(得分:0)
迭代锚点并筛选出包含主机部分的href
属性的锚点,例如:使用正则表达式:
var r, l, i, n, o, a ;
r = /(?:(http|https):\/\/)?([^\/]+)?(?:\/(.+))?/ ;
l = document.getElementsByTagName("a") ;
for( i = 0, n = l.length ; i < n ; i++ ) {
o = l[i] ;
if( !! ( s = o.getAttribute("href") ) ) {
a = r.exec(s) ;
if( !! a[2] ) //.. add your handlers to the A element
}
}
相对URL,即那些未指定主机的URL,不会离开当前主机。
然后,您可以将确认对话框添加到指向远程主机的链接的点击处理程序:
//..
function(href) {
if( confirm("You are about to leave this website.\n\nAre you sure you want to continue?") ) window.location.assign(href) ;
}
href
是点击的href
元素的A
属性的值。
就我个人而言,我不同意建议监控每次点击Event
的解决方案。通常,您的页面生命周期中会有更多点击Events
,而不需要进行推荐。换句话说,这将产生不必要的开销。