href中的firefox javascript返回false重定向浏览器并显示false

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={ 保存:函数() { 警报(“此

以下是我的代码在chrome中运行良好

<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字符串并呈现。至少在大多数浏览器中是这样。这让我省去了一些麻烦。谢谢