href中的firefox javascript返回false重定向浏览器并显示false
以下是我的代码在chrome中运行良好href中的firefox javascript返回false重定向浏览器并显示false,javascript,firefox,Javascript,Firefox,以下是我的代码在chrome中运行良好 <body> <a href="javascript: sam.save();">hehe</a> <script> var sam = { save : function() { alert("here") return false; } } </script> 变量sam={ 保存:函数() { 警报(“此
<body>
<a href="javascript: sam.save();">hehe</a>
<script>
var sam = {
save : function()
{
alert("here")
return false;
}
}
</script>
变量sam={
保存:函数()
{
警报(“此处”)
返回false;
}
}
在firefox中运行时,页面重定向,屏幕上显示false,地址栏内容如图所示
firefox版本是9.0.1
建议和规避请…
<a href="#" onclick="sam.save();">hehe</a>
你引用的代码不可能产生你观察到的行为。只有当sam.save()
返回false
时,观察到的行为才会发生,而引用的代码返回未定义的
。您的实际完整代码是什么样子的
编辑:有用的答案在评论中。我把它放在这里是为了更容易找到
哦,我错过了警报后的“返回错误”。在这种情况下,您看到的行为是正确的:如果javascript:execution返回的值不是未定义的值,则该值将被视为HTML字符串并呈现。至少在大多数浏览器中是如此Boris Zbarsky 6月11日15:25
由于某些原因,return false在FF-inside href=“javascript:”中不起作用,但void(0)起作用
更兼容的语法应该是
<a href="javascript:void(0)" onclick="sam.save()">hehe</a>
试试看
`<a href="javascript: void(sam.save())">hehe</a>`
``
希望这有助于…它的工作原理示例:
Firefox:第二个和第三个是呈现白色页面
<body>
<a href="javascript: something.with_early_return();">with_early_return</a>
<a href="javascript: something.with_false();">with_false</a>
<a href="javascript: something.with_string();">with_string</a>
<script>
var something = {
with_early_return: function() {
alert("with_early_return");
return;
},
with_false: function () {
alert('with_false');
return false;
},
with_string: function () {
alert('with_string');
return 'It renders this as text';
}
}
</script>
铬:第一种情况是呈现白色页面
<body>
<a href="javascript: something.with_early_return();">with_early_return</a>
<a href="javascript: something.with_false();">with_false</a>
<a href="javascript: something.with_string();">with_string</a>
<script>
var something = {
with_early_return: function() {
alert("with_early_return");
return;
},
with_false: function () {
alert('with_false');
return false;
},
with_string: function () {
alert('with_string');
return 'It renders this as text';
}
}
</script>
var某物={
使用_-early _-return:function(){
警报(“提前返回”);
返回;
},
with_false:function(){
警报('with_false');
返回false;
},
带_字符串:函数(){
警报('with_string');
返回“它将此呈现为文本”;
}
}
我测试了代码,它在最新版本的Firefox中运行。它是13.0,所以你有点落后了…在点击它重定向到的代码中的链接后,就像我在屏幕上使用的一样。。。经过一点差异之前,我做了它喜欢的代码。完整的代码是我给。。。正如您所说,如果返回false,则结果显示在屏幕截图中。。。如果没有返回错误,那么一切正常……哦,我错过了警报后的“返回错误”。在这种情况下,您看到的行为是正确的:如果javascript:execution返回的值不是undefined
,则该值将被视为HTML字符串并呈现。至少在大多数浏览器中是这样。这让我省去了一些麻烦。谢谢