在 Chrome 和 Firefox 中不同的 "return null" 结果
Different "return null" results in Chrome and Firefox
给定以下代码:
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 作为浏览器 returns 空值(通过单击取消),则不会发生任何预期的事情。
但是如果用户使用 Firefox 他将被重定向到 url Add() 并在屏幕上显示 null 作为文本字符串。
为什么 Firefox 的反应与 Chrome 不同?
我一直无法找到有关 javascript:
URL 工作原理的详细规范,以及当代码 returns 不是字符串或未定义时它们应该做什么。看起来 Chrome 和 FireFox 在这种情况下采取了不同的方法。 Chrome 将它们视为 undefined
,并且不会更改页面内容。 FF 做各种事情:如果它 returns null
它显示字符串 null
;如果它 returns 一个具有单个 属性 的对象,它会显示 属性.
的值
使用 return void(0)
或 return undefined
而不是 null
以获得更好的浏览器兼容性。
给定以下代码:
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 作为浏览器 returns 空值(通过单击取消),则不会发生任何预期的事情。
但是如果用户使用 Firefox 他将被重定向到 url Add() 并在屏幕上显示 null 作为文本字符串。
为什么 Firefox 的反应与 Chrome 不同?
我一直无法找到有关 javascript:
URL 工作原理的详细规范,以及当代码 returns 不是字符串或未定义时它们应该做什么。看起来 Chrome 和 FireFox 在这种情况下采取了不同的方法。 Chrome 将它们视为 undefined
,并且不会更改页面内容。 FF 做各种事情:如果它 returns null
它显示字符串 null
;如果它 returns 一个具有单个 属性 的对象,它会显示 属性.
使用 return void(0)
或 return undefined
而不是 null
以获得更好的浏览器兼容性。