Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery在新窗口中打开不属于我的网站的所有链接_Javascript_Jquery_Adsense_Logical Operators - Fatal编程技术网

Javascript 使用jquery在新窗口中打开不属于我的网站的所有链接

Javascript 使用jquery在新窗口中打开不属于我的网站的所有链接,javascript,jquery,adsense,logical-operators,Javascript,Jquery,Adsense,Logical Operators,我不确定我必须在“?”中输入什么来检查网站是否是我的地址。这是否也适用于谷歌adsense广告(只是好奇,但并不重要) 我在考虑使用逻辑运算符,如“not”。那么它会检查我的网站吗?那么接下来呢???会是我的网站吗 $j(!a[href=???]).click(function(){ window.open(this.href, "target=_blank"); return false; }); 那么:

我不确定我必须在“?”中输入什么来检查网站是否是我的地址。这是否也适用于谷歌adsense广告(只是好奇,但并不重要)

我在考虑使用逻辑运算符,如“not”。那么它会检查我的网站吗?那么接下来呢???会是我的网站吗

$j(!a[href=???]).click(function(){
                window.open(this.href, "target=_blank");
                return false;
            });
那么:

$j('a').live('click', function(){
  if(this.href.indexOf('yourwebsite.com') == -1) {
    window.open(this.href, "target=_blank");
    return false;
  }
});
这也可以通过正则表达式进行改进,这样它就不会捕获像这样的URL,但这是一种边缘情况。

如何:

$j('a').live('click', function(){
  if(this.href.indexOf('yourwebsite.com') == -1) {
    window.open(this.href, "target=_blank");
    return false;
  }
});
这也可以通过正则表达式进行改进,这样它就不会捕获像这样的URL,但这是一种边缘情况。

尝试以下方法:

$j('a')
    .not('[name^="http://your.domain.com/"]')
    .attr('target', '_blank');
更新

我以前的修正只有在所有URL都是绝对URL时才有效,这是一个错误的假设。请尝试以下方法:

$j('a[name^="http:"], a[name^="https:"]')
    .not('[name^="http://your.domain.com/"]')
    .attr('target', '_blank');
此新版本跳过所有相关URL。如果您的所有站点内URL都是相对的(即不要以
https?:
开头),您可以跳过调用
。而不是

尝试以下操作:

$j('a')
    .not('[name^="http://your.domain.com/"]')
    .attr('target', '_blank');
更新

我以前的修正只有在所有URL都是绝对URL时才有效,这是一个错误的假设。请尝试以下方法:

$j('a[name^="http:"], a[name^="https:"]')
    .not('[name^="http://your.domain.com/"]')
    .attr('target', '_blank');

此新版本跳过所有相关URL。如果您的所有站点内URL都是相对的(即不要以
https?:
开头),您可以跳过对
的调用。而不是

您可以设置一个类来执行此操作:

// Outbound Links
var outLinks = function() { $('a[@class*=out]').click( function(){ this.target = '_blank'; } ); }
$(document).ready(outLinks);
然后,您所需要做的就是将“out”类添加到任何链接,它将打开一个新窗口

或对于以http开头的任何链接://

$('a[href^="http://"]').prop("target", "_blank");

您可以设置一个类来执行此操作:

// Outbound Links
var outLinks = function() { $('a[@class*=out]').click( function(){ this.target = '_blank'; } ); }
$(document).ready(outLinks);
然后,您所需要做的就是将“out”类添加到任何链接,它将打开一个新窗口

或对于以http开头的任何链接://

$('a[href^="http://"]').prop("target", "_blank");

运行任何类似于
$('a')
的操作都会在每个
a
元素中循环-您只能在实际单击时担心它。此外,您可以只运行相对url作为您的站点,绝对url作为其他人的站点

$( document ).on( 'click', 'a', function( event ){
  var $a = $( this );
  // test for anything like `http://` or '//whatever' or 'ftp://'
  if ( /^\w+?\:?\/\//.test( $a.attr( 'href' ) ) ){
    // since this runs before the event is propagated,
    // adding it now will still work
    $a.prop( 'target', '_blank' );
  }
});
演示:

也可以使用window.open:

$( document ).on( 'click', 'a', function( event ){
  var href = $( this ).attr( 'href' );
  // test for anything like `http://` or '//whatever' or 'ftp://'
  if ( /^\w+?\:?\/\//.test( href ) ){
    // dont follow the link here
    event.preventDefault();

    //  open the page
    window.open( href, '_blank' );
  }
});

演示:

运行类似于
$('a')
的任何操作都将循环遍历每个
a
元素-您只能在实际单击时担心它。此外,您可以只运行相对url作为您的站点,绝对url作为其他人的站点

$( document ).on( 'click', 'a', function( event ){
  var $a = $( this );
  // test for anything like `http://` or '//whatever' or 'ftp://'
  if ( /^\w+?\:?\/\//.test( $a.attr( 'href' ) ) ){
    // since this runs before the event is propagated,
    // adding it now will still work
    $a.prop( 'target', '_blank' );
  }
});
演示:

也可以使用window.open:

$( document ).on( 'click', 'a', function( event ){
  var href = $( this ).attr( 'href' );
  // test for anything like `http://` or '//whatever' or 'ftp://'
  if ( /^\w+?\:?\/\//.test( href ) ){
    // dont follow the link here
    event.preventDefault();

    //  open the page
    window.open( href, '_blank' );
  }
});


演示:

您是否意识到,如果启用了弹出窗口阻止程序,您将断开所有链接?直接在HTML源代码中执行此操作要好得多,其中
target=“\u blank”
将在不触发弹出窗口阻止程序的情况下工作。@Pekka因此,我看到在window.open中使用.click()会断开链接,但下面使用.attr()并添加您提到的HTML代码的方法不应断开链接,正确吗?下面添加
target=“\u blank”
的方法不应该破坏它,你是对的。你意识到,如果启用了弹出窗口阻止程序,你会破坏所有链接吗?直接在HTML源代码中执行此操作要好得多,其中
target=“\u blank”
将在不触发弹出窗口阻止程序的情况下工作。@Pekka因此,我看到在window.open中使用.click()会断开链接,但下面使用.attr()并添加您提到的HTML代码的方法不应断开链接,正确吗?下面添加
target=“\u blank”
的方法不应该破坏它,你是对的。我尝试了这个方法,但效果不错,因为我的网站页面在新窗口中打开,这正是我试图避免的。我也不知道为什么它不起作用。我用:not vs.not()试过了,但它仍然将我页面上的每个链接都变成了target=\u空白链接。@Nils R-如果你仍然有问题,我提供了一个演示,该版本在web浏览器上的强度更低,灵活性更强。对不起,@NilsR。我的答案有缺陷,但我现在已经更新了。@Bups:
^=
的意思是“从开始”。我尝试了这个方法,但效果不错,因为我的网站页面在新窗口中打开,这正是我试图避免的。我也不知道为什么它不起作用。我用:not vs.not()试过了,但它仍然将我页面上的每个链接都变成了target=\u空白链接。@Nils R-如果你仍然有问题,我提供了一个演示,该版本在web浏览器上的强度更低,灵活性更强。对不起,@NilsR。我的答案有缺陷,但我现在已经更新了。@Bups:
^=
的意思是“从开始”。这实际上似乎是一个很好的方法,我能看到的唯一问题是,如果有人出于某种原因关闭了JS,那么我的所有链接都会被破坏,因为我必须遵循一个新的url模式来锚定链接。嗯?如果禁用JS,则整个方法都会失败,这就是为什么您应该将
target=“blank”
添加到HTML中,而不是您的问题要求的方式:)谢谢,但我添加此JS的原因是因为有一个特定页面,我需要所有URL才能转到新窗口(每个请求),并且几乎整个页面都是动态的,但我确实可以使用target=“_blank”。这实际上似乎是一个很好的方法,我能看到的唯一问题是,如果有人出于某种原因关闭了JS,那么我的所有链接都会被破坏,因为我必须遵循锚链接的新url模式才能工作。嗯?如果禁用JS,则整个方法都会失败,这就是为什么您应该将
target=“blank”
添加到HTML中,而不是您的问题要求的方式:)谢谢,但我添加此JS的原因是因为有一个特定页面,我需要所有URL才能转到新窗口(每个请求),并且几乎整个页面都是动态的,但我会尽可能使用target=“\u blank”。