退出当前域名

时间:2012-01-06 13:24:45

标签: javascript

假设我在当前网页上有许多锚链接,其中一些链接指向某些不同的域。

所以我想要的是在移动到不同的域之前向用户显示一个弹出/消息类型的东西。

解决方案1:页面加载后,我们可以将click事件绑定到每个锚链接,当用户点击任何链接时,我们可以检查外部链接并显示消息。

Q1。还有其他优于解决方案1的优化方法吗?

Q2。如何检查链接是否将您带出当前域/指向不同于当前域的链接?

谢谢, 键。

2 个答案:

答案 0 :(得分:0)

  

还有其他优化方法比解决方案1更好吗?

将单个事件绑定到文档并检查单击目标。这称为event delegation

  

如何检查链接是否会将您从当前的doi中删除

检查点击链接的href属性

答案 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,而不需要进行推荐。换句话说,这将产生不必要的开销。