HTML自动将href映射到根

时间:2018-07-25 18:26:10

标签: c# html

我有一个带有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)$

4 个答案:

答案 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, 例如“点击这里”