如果我单击链接,则要获取该链接的QUERY STRING

时间:2019-01-17 15:12:52

标签: javascript jquery html

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
    $('a').attr('onclick', 'window.location.href=hideref(this.href); return false;');
    function hideref(strUrl){
    return "https://test.xyz/?q="+escape(strUrl);
    }
    </script>

这是我的代码 如果我点击

<a href="https://example.com/post/1">link 1</a>

然后就像

https://test.xyz/?q=https%3A//example.com/post/1

但我希望它像

https://test.xyz/?q=/post/1

我该怎么做?

3 个答案:

答案 0 :(得分:1)

您应该使用this.hrefsource),而不是使用hideref将网址发送到this.pathname函数。

您的代码如下:

<script type="text/javascript">
    $('a').click(function() {
      window.location.href = hideref(this.pathname + this.search);
      return false;
    });
    function hideref(strUrl){
        return "https://test.xyz/?q="+escape(strUrl);
    }
</script>

答案 1 :(得分:1)

您需要

  • 分配点击处理程序
  • preventDefault停止链接
  • 获取路径名并搜索
  • 编码

$('a').on('click',function(e) {
  e.preventDefault(); // stop the link
  var newUrl = "https://test.xyz/?q="+encodeURIComponent(this.pathname+this.search); 
  console.log(newUrl); // delete this and uncomment next line
  // window.location=newUrl;
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<a href="https://example.com/post/1">link 1</a>
<a href="https://example.com/post/1?bla=bla1">link 2</a>

答案 2 :(得分:1)

如果只需要url中的路径名,则要引用单击的锚点中的路径名。您也不应使用属性来定义点击处理程序。

$('a').on('click', function (evt) {
  evt.preventDefault()
  var path = hideref(this.pathname);
  console.log(path);
  //window.location.href = path;
});

function hideref(strUrl) {
  return "https://example.com/?q=" + encodeURIComponent(strUrl);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<a href="https://example.com/post/1">link 1</a>