强制在同一个域中的同一窗口中打开链接

时间:2011-09-22 10:18:44

标签: javascript jquery

有人可以帮我解决这个问题。

当它们位于_blank中的外部域时,需要打开所有链接。但是必须在同一个窗口中打开同一域中的链接。我有问题,因为我在2个域中工作一个是https://www而其他只是http://没有www,如何在没有www的链接上的相同窗口中打开链接?

 function externalLinks() {
    var h = window.location.host;
    jQuery("a[href^='http']").not("[href*='" + h +   "']").not(".forceSameWindow").attr('target', '_blank');
 }

现在所有链接都以空白示例https://www.something.com

开头http://something.com

我必须在jquery / js中这样做。我通过做硬编码域来做到这一点,但做得很好!

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

只需更改

var h = window.location.host;

var h = window.location.host.replace(/^www/,'');

如果您在www主持人身上,那么无关紧要

答案 1 :(得分:0)

你必须强制apache添加www。

将其添加到您的.htaccess文件中:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www.your_domain.com$
RewriteRule ^(.*)$ http://www.your_domain.com/$1 [R=301]

答案 2 :(得分:0)

var externalLinks = function(){
  var anchors = document.getElementsByTagName('a');
  var length = anchors.length;
  for(var i=0; i<length;i++){
    var href = anchor[i].href;
    if(href.indexOf('http://h4kr.com/') || href.indexOf('http://www.h4kr.com/')){
      return;
    }
    else{
      anchor[i].target='_blank';
    }
  }
};

这应该有效:)

答案 3 :(得分:0)

这是基于您的原始帖子

$("a").each(function($a){
    $a=$(this);
    if(!~this.href.indexOf(document.location.host)||!$a.hasClass('forceSameWindow')){
        $a.attr('target','_blank');
    }
})

假设所有链接最初都未设置为_blank