给出以下代码:
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不同?
答案 0 :(得分:2)
我一直无法找到javascript:
URL如何工作的详细规范,以及当代码返回字符串或未定义的内容时它们应该做什么。看起来Chrome和FireFox在这种情况下采取了不同的方法。 Chrome会将其视为undefined
,并且不会更改页面内容。 FF做了各种各样的事情:如果它返回null
,它会显示字符串null
;如果它返回具有单个属性的对象,则显示该属性的值。
使用return void(0)
或return undefined
代替null
,以提高浏览器之间的兼容性。