仅向外部链接添加参数

我想仅向外部链接(重定向到外部网站的链接)添加一个参数。这是我到目前为止所做的:


      <script type="text/javascript">//<![CDATA[

        jQuery('document').ready(function(){

          jQuery( 'a' ).each( function( index, element ){

            var url = jQuery( element ).prop( 'href' );

            

            if (url.host !== window.location.host){

              if ( url.indexOf( '?' ) == -1 ) {

                url += '?ref=xxx';

              } else {

                url += '&ref=xxx';

              }


              jQuery( element ).prop( 'href', url );

            }

          } );

        });

      </script>

但是,这将添加ref=xxx到所有链接(内部和外部)。我在这里错过了什么吗?


扬帆大鱼
浏览 112回答 1
1回答

呼啦一阵风

url不包含.host属性;返回一个href&nbsp;.prop()字符串。要访问主机名,您需要将每个 URL 转换为带有new URL().请注意,您还必须更新.indexOf()to 指向url.host.indexOf()。jQuery('document').ready(function() {&nbsp; jQuery('a').each(function(index, element) {&nbsp; &nbsp; var url = new URL(jQuery(element).prop('href'));&nbsp; &nbsp; if (url.host !== window.location.host) {&nbsp; &nbsp; &nbsp; if (url.host.indexOf('?') == -1) {&nbsp; &nbsp; &nbsp; &nbsp; url += '?ref=xxx';&nbsp; &nbsp; &nbsp; } else {&nbsp; &nbsp; &nbsp; &nbsp; url += '&ref=xxx';&nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; jQuery(element).prop('href', url);&nbsp; &nbsp; }&nbsp; });});<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script><a href="/test.html">Internal</a><a href="https://www.google.com">External</a>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript