Chrome和Firefox会产生不同的“返回null”

时间:2015-04-24 19:42:50

标签: javascript google-chrome firefox cross-browser

给出以下代码:

jQuery(document).ready(function($) {
      $('[name="clickableTD"]').click(function() {
            window.document.location = $(this).attr("href");
      });
});


function Add(id) {
  
	
    var stock = "2";
	
    var quantity = prompt("SELECT QUANTITY:", 1);
  
    if (quantity == null) {
        return null;
    }
  
    else if (quantity <= stock) {
        alert("Good");
    }
	
	else if (quantity > stock) {
        alert("Over");
	}
	
	else if (isNaN(quantity)) {
        alert("NaN");
    }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>


<table border="1">
  <tr>
    <td name="clickableTD" href="javascript:Add('1')">
      <a>Click</a>
    </td>
  </tr>
</table>

如果用户使用 Chrome 返回空值(通过点击取消),因为浏览器没有按预期发生任何事情。

但如果用户使用 Firefox ,他将被重定向到网址Add()并在屏幕上显示为文本字符串。

为什么Firefox的反应与Chrome不同?

1 个答案:

答案 0 :(得分:2)

我一直无法找到javascript: URL如何工作的详细规范,以及当代码返回字符串或未定义的内容时它们应该做什么。看起来Chrome和FireFox在这种情况下采取了不同的方法。 Chrome会将其视为undefined,并且不会更改页面内容。 FF做了各种各样的事情:如果它返回null,它会显示字符串null;如果它返回具有单个属性的对象,则显示该属性的值。

使用return void(0)return undefined代替null,以提高浏览器之间的兼容性。