2010-02-10 29 views
1

这是我的问题。我在CMS内部工作,用户可以创建超链接(内部和外部)我想知道是否有一种好方法来检查用户点击链接时是否导航到外部网站。如果他们使用后退/前进按钮,在地址栏中输入内容等,我不想做任何事情。我只是想将它们重定向到我们网站中的一个页面,该页面采用他们真正想要访问的地址查询字符串并显示一条5秒(或左右)的消息,告诉他们他们将离开我们的网站,我们不对其中的内容负责等等。由于最终用户将负责生成大部分链接,教他们实际上指向在中间页面的链接是不太理想的,所以我想知道是否有一个简单的解决方案使用JavaScript。重定向到转到外部网站之前的中间页面

回答

1

你可以使用jQuery附加一个单击事件是外部网站上的所有链接(以http开头,减去一些特殊情况下),那么这既可以显示一个模式对话框,或设置window.location到您的中间页(你可以使用一个查询字符串var作为外部url)。您可以自定义选择,以获得外部链接,那么附加的行为:

$.expr[':'].external = function(obj){ 
    return !obj.href.match(/^mailto\:/) 
      && (obj.hostname != location.hostname); 
}; 

$('a:external').click(function() { 
    //show your dialog box or set window.location 
    //link in question will be $(this).attr('href') 
}); 
0

您应该在用户保存数据时用自己的特殊链接(例如http://yoursite.com/redirect.ashx?http://external.com)替换用户的链接,或者更好的方法是将用户生成的内容提供给其他用户。

+0

获取它们生成这些链接的代码不是一种选择。我们正在使用第三方工具,无法对其进行修改。当我点击一个外部超链接并在那里处理它时,我真正想要的是一种方法。 – Ben 2010-02-10 21:31:40

1

我想我会类似于wsanville的答案的东西。除了我将添加一个点击事件到所有锚点标记,然后检查他们的href值是否在我们的域。

因此,像:

$('a').click(function() { 
    if this.href.indexOf('mydomain.com'!=-1) 
     return true; 
    else{ 
     window.location = "intermediate.html?href=" + this.href; 
    } 
}); 

任何人都知道什么样的表现打了一个页面上的事件连接到每一个锚标记可以有?

相关问题