Javascript 锚链接中的Href和onclick问题

Javascript 锚链接中的Href和onclick问题,javascript,javascript-events,Javascript,Javascript Events,我有指定了href和onclick事件的锚链接。onclick将location.href设置为服务器url,并将href设置为其他链接。 单击链接时,href事件始终被调用,但onclick事件仅被调用一次(仅针对一个锚链接)。如果我调试javascript,它会正常工作,同时调用href和onclick。有什么问题吗?试试看 <a href="whatever.html" onclick='window.location.href="http://whereverelse";retu

我有指定了href和onclick事件的锚链接。onclick将location.href设置为服务器url,并将href设置为其他链接。 单击链接时,href事件始终被调用,但onclick事件仅被调用一次(仅针对一个锚链接)。如果我调试javascript,它会正常工作,同时调用href和onclick。有什么问题吗?

试试看

 <a href="whatever.html" onclick='window.location.href="http://whereverelse";return false;'>linky</a>

只是解释一下:在这种情况下返回false会阻止默认操作


为什么要这样做?

听起来您希望链接调用运行服务器端代码(如PHP)的页面,然后将浏览器指向另一个位置。这通常是通过让服务器端脚本用第二个URL发送重定向响应来完成的。

对于那些说“为什么”的人,我有一个原因。点击鼠标中键。也许您有AJAX,它可以从服务器获取详细信息,然后在同一页面中准备这些信息,但是如果中间的点击器希望在新页面中看到这些数据,它们就会被阻止

因此,报告将为需要此类功能的用户提供相同的功能


作为一个习惯性的中键点击者,我非常讨厌标签。但我发现,通过GreaseMonkey,我有时可以将javascript href重新分配给onclick,并尝试解析href的有效URL。我真的希望在新选项卡中打开Javascript只需克隆页面,然后运行代码。

我猜返回false将停止href的运行。但我希望两者都能工作。Onclick服务器端的工作方式与更新数据库类似,之后我想将用户重定向到href中指定的正确链接。但这只会发生一次,如中所述这个问题。我尝试从服务器端本身重定向用户,但如果url以不同的协议开始,例如mms://,notes://etc.location.href用于更改当前页面,则会失败。听起来你想做一个AJAX请求哦,那跟我一样懒。。。你认为你能避免AJAX多久。。请放弃。。。我曾经尝试过同样的事情&现在我已经。。。相信我,屈服中有平静。。。我想你需要更多的信息。为什么您要用一个锚标记发送两个请求?“只被调用一次”是什么意思?只针对一个锚定标记,不是全部,也不是第一次,而是在页面被替换之后?完全不清楚您的目标是什么。当您说onclick设置一个位置,href-另一个位置时,您实际希望用户去哪个位置?你知道他不能在一页上同时浏览两个地方。通过检查一些答案的注释,我感觉您希望将用户带到一个位置,然后重定向到另一个位置。如果是,则应该从服务器端发出重定向。例如,如果您有href=“/target.html”和onclick=“window.location=”/action.call”,则必须将“/action.call”放在href上,并在服务器端发送HTTP状态302重定向。另外,查看“发布后重定向”!