我有一个带有href设置的锚标记:
<a href="$myfunction(param)$">; Click Here</a>
当我单击“单击此处”时,它将重定向到http://mywebsite/ $ myfunction(1234)。 该页面显然不存在。如何确保单击上面的链接不会映射到根目录?我希望它调用javascript函数。
注意:我不能这样做:
<a href="javascript:$myfunction(param)$">Click Here</a>.
原因是我们有一个第三方爬网程序(没有可用的源代码),该爬网程序在页面上搜索锚标记并获取链接的href部分,如果在 exact中找不到则失败 格式$ myfunction(param)$
答案 0 :(得分:1)
HTML锚链接规范不支持添加JavaScript函数作为href属性的值。对于https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a,您应该添加一个URL或URL片段。
如果您需要以这种方式添加它,则可以添加onclick事件来锚定,如下所示:
<a href="$myfunction(param)$" onclick="myfunction(param)">; Click Here</a>
然后,您只需要确保函数返回false和/或调用event.preventDefault,即可避免重定向。
答案 1 :(得分:1)
您可以使用onClick
事件处理程序来调用该函数,并阻止与event.preventDefault()
的链接的默认操作。
<a href="$myfunction(param)$" onclick="myfunction(event)"> Click Here</a>
<br/>
<a href="someaddress" onClick="function2()">Link that does NOT have its default action prevented</a>
<script>
function myfunction(e){
e.preventDefault();
console.log("Function myfunction() called");
}
function function2(){
console.log("Function function2() called");
}
</script>
答案 2 :(得分:0)
您是否尝试过调用onClick处理程序?
<a href="" onClick="myfunction(param)">; Click Here</a>
另一种方法是
function MyFunction(param){
alert(param);
}
(function() {
var aElements = document.getElementsByTagName("a");
var aList = Array.prototype.slice.call(aElements);
aList.forEach(function(elem) {
var regex = /\$(.*?)\$/g;
var result =regex.exec(elem.href);
if (result != undefined && result.length > 0) {
elem.onclick= function(){
//executes function
eval(result[result.length-1]);
//prevents href action;
return false;
}
}
});
})();
<a href="$MyFunction('hello')$">I have a function</a>
<br/>
<a href="#home">I have a normal link</a>
<br/>
<a href="$MyFunction('world')$">I have another function</a>
答案 3 :(得分:0)
您可以使用链接标记的'onclick'属性来代替href, 例如“点击这里”