【问题标题】:Redirect to an intermediate page before going to external site在转到外部站点之前重定向到中间页面
【发布时间】:2010-02-10 21:06:10
【问题描述】:

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

【问题讨论】:

    标签: .net javascript html redirect


    【解决方案1】:

    您可以使用jQuery 为您网站上的所有外部链接附加一个点击事件(以 http 开头,减去一些特殊情况),然后可以显示一个模式对话框,或将window.location 设置为您的中间页面(您可以为外部 url 添加查询字符串 var)。您可以制作自定义选择器来获取外部链接,然后附加行为:

    $.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')
    });
    

    【讨论】:

      【解决方案2】:

      我想我会类似于 wsanville 的回答。除了我将为所有锚标签添加点击事件,然后检查它们的 href 值是否在我们的域内。

      比如:

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

      有人知道将事件附加到页面上的每个锚标记会产生什么样的性能影响?

      【讨论】:

        【解决方案3】:

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

        【讨论】:

        • 获取生成这些链接的代码不是一种选择。我们正在使用第三方工具,无法对其进行修改。我真正想要的是一种在单击外部超链接时捕获并在那里处理它的方法。
        猜你喜欢
        • 2013-04-19
        • 1970-01-01
        • 2022-01-01
        • 1970-01-01
        • 2018-10-12
        • 1970-01-01
        • 1970-01-01
        • 2018-09-07
        • 1970-01-01
        相关资源
        最近更新 更多