我们刚刚发布了一个在线商店。
在此页面上,选择框会导致某些计算机上的 Internet Explorer 7 崩溃。从来没有在我的电脑上。 有谁知道为什么吗?
实时链接: http://velour.se/collection/women/tops/eloise 罢工>
更新:结果证明我发布的第一个没有崩溃。
但以下是:http://velour.se/collection/women/outerwear/irina
屏幕转储:http://skitch.com/jesperlind/nc4j2/tops-eloise-velour-ie7-bug
原始版本:
<select id="sizeDD" onchange="javascript:SizeChange(this);"></select>
//Internet Explorer problem.
function SizeChange(e){
DrawAmountDD(GetAmountById(e.value));
}
这是我认为可能涉及的一些代码:
function DrawAmountDD(maxAmount){
/*var max = parseInt(maxAmount) > parseInt(maxShowAmount) ? maxShowAmount : maxAmount;
var html = "";
for(var i=1; i <= max; i++){
html += "<option value='" + i + "'>" + i + "</option>";
}
$("#amountDD").html(html);*/
var max = parseInt(maxAmount) > parseInt(maxShowAmount) ? maxShowAmount : maxAmount;
var ddlAmount = document.getElementById("amountDD");
ddlAmount.length=max;
for(var a=1; a <= max; a++){
ddlAmount.options[a-1].value = a;
ddlAmount.options[a-1].text = a;
}
}
版本 2:
<select id="sizeDD"></select>
<select id="amountDD"></select>
<script type="text/javascript">
var maxShowAmount = '5';
var colorSizeArr =
{ "colSize":
[
{ "color": "Black/Offwhite",
"specificId": "2",
"size": "XS",
"amount": "1" }
]
};
colorSizeArr.colSize.push(
{ "color": "Black/Offwhite",
"specificId": "13",
"size": "S",
"amount": "2" });
$(document).ready(function () {
var selectSizeDD = document.getElementById('sizeDD');
selectSizeDD.onchange = function () { sizeChange(selectSizeDD); };
});
function sizeChange(e) {
DrawAmountDD(GetAmountById(e.value));
}
function GetAmountById(specificId) {
for (var i = 0; i < colorSizeArr.colSize.length; i++) {
if (colorSizeArr.colSize[i].specificId == specificId) {
return colorSizeArr.colSize[i].amount;
}
}
return 1;
}
function DrawAmountDD(maxAmount) {
var max = parseInt(maxAmount) > parseInt(maxShowAmount) ? maxShowAmount : maxAmount;
var html = "";
for (var i = 1; i <= max; i++) {
html += "<option value='" + i + "'>" + i + "</option>";
}
$("#amountDD").html(html);
}
</script>
更新
我还没有弄清楚为什么 Internet Explorer 7 在某些计算机上崩溃。无论如何,上面的代码与它没有任何关系。这要简单得多。单击只有一个选项的选择框时,浏览器崩溃了。像这样:
<select id="amountDD">
<option value="1">1</option>
</select>
我在这个链接上找到了一些信息,其中说单个选项也应该有一个选定的属性,但如果没有该属性,它似乎会崩溃。
http://www.akselvoll.net/2007/08/ie7-crashes-when-clicking-on-drop-down.html
最佳答案
我希望“崩溃”是指“JavaScript 不起作用”,而不是“Internet Explorer 崩溃”。如果只是页面,通常可以通过点击状态栏中的“页面错误”来查看错误。
另外,尝试一些经典的 JavaScript 调试 - 一次注释掉一个函数 block ,直到找到导致其崩溃的 block ,然后将范围缩小到该行。
关于javascript - 为什么 onChange 会使 Internet Explorer 7 崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1954620/