<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
我该怎么做?
答案 0 :(得分:1)
您应该使用this.href
(source),而不是使用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)
您需要
$('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>