IE浏览器的DOM模型
2022-10-29 12:23:00<form …>
<table … />
</form>
如果使用 JavaScript 向表格内添加表单元素<input>,你会发现在
IE 处理 “/>” 形式的结尾标签有问题。如下面这段:
<form …> <table … /> </form>
如果使用 JavaScript 向表格内添加表单元素<input>,你会发现在 IE 中<form>并没有把这些<input>包含起来。为什么呢?看看<table>元素的 innerHTML 就知道了:第一行竟然是“</form>”!可见 IE 对这种情况的处理有多糟糕。FireFox下就没有这种情况。
IE 的 DOM 模型不允许设置 <table> 元素的 innerHTML。在 DHTML 参考文档你会看到,IE 建议使用 insertRow 等方法来操作表格内容,而使用 table.innerHTML=… 在 IE 下面就会报错。 FireFox 没有这个问题。
IE 的 DOM 模型不能正确地创建单选框。如下面的 JavaScript 代码:
var radio = document.createElement(‘input’); radio.setAttribute(‘type’, ‘radio’); radio.setAttribute(‘name’, name); radio.setAttribute(“value”, value);
如果把这样创建出来的单选框放到页面上,在 IE 下这些单选框都没法选中。FireFox没有这个问题。折中的解决办法是:
function createRadio(name, value) { if (navigator.appName.indexOf(“Microsoft”) != -1) { var radio = document.createElement(‘<input type=”radio” name=”‘ + name + ‘” />’); radio.value = value; return radio; } else { var radio = document.createElement(‘input’); radio.setAttribute(‘type’, ‘radio’); radio.setAttribute(‘name’, name); radio.setAttribute(“value”, value); return radio; } }
IE 处理 “/>” 形式的结尾标签有问题。如下面这段:
<form …> <table … /> </form>
如果使用 JavaScript 向表格内添加表单元素<input>,你会发现在 IE 中<form>并没有把这些<input>包含起来。为什么呢?看看<table>元素的 innerHTML 就知道了:第一行竟然是“</form>”!可见 IE 对这种情况的处理有多糟糕。FireFox下就没有这种情况。
IE 的 DOM 模型不允许设置 <table> 元素的 innerHTML。在 DHTML 参考文档你会看到,IE 建议使用 insertRow 等方法来操作表格内容,而使用 table.innerHTML=… 在 IE 下面就会报错。 FireFox 没有这个问题。
IE 的 DOM 模型不能正确地创建单选框。如下面的 JavaScript 代码:
var radio = document.createElement(‘input’); radio.setAttribute(‘type’, ‘radio’); radio.setAttribute(‘name’, name); radio.setAttribute(“value”, value);
如果把这样创建出来的单选框放到页面上,在 IE 下这些单选框都没法选中。FireFox没有这个问题。折中的解决办法是:
function createRadio(name, value) { if (navigator.appName.indexOf(“Microsoft”) != -1) { var radio = document.createElement(‘<input type=”radio” name=”‘ + name + ‘” />’); radio.value = value; return radio; } else { var radio = document.createElement(‘input’); radio.setAttribute(‘type’, ‘radio’); radio.setAttribute(‘name’, name); radio.setAttribute(“value”, value); return radio; } }