我有
$('#structure').html(html);
这在FireFox中运行良好。 IE 8不显示html。我也尝试过简单的文字,例如。
$('#structure').html("Test");
或
$('#structure').html("<h3>Test</h3>");
所有人都不能使用IE 8,但在Firefox中。所以我不认为这是无效的HTML的问题。
如果我用
替换它document.write(html);
IE正确显示内容。
我迷路了。我也试过getElementById并设置innerHTML属性或.empty并追加。基本上我尝试过的所有功能都在FF中工作,在IE 8中没有任何功能。
代码在.change()事件中运行,该事件也在IE中正确执行。
任何想法?
编辑:
html由第三方商业插件返回。它返回用于显示ActiveX组件(IE)或插件(FF)的浏览器特定代码。返回的html有效。这不是我使用它的唯一地方。
也许你不能异步加载ActiveX?这可以解释一切。
$(document).ready(function() {
$('#ID').change(function() {
var value = $(this).val();
getStructure(value);
});
});
function getStructure(id){
$.get(
'getStructure.php?id=' + id,
function(data){
// 3rd party function call:
var html = getObjectTag(182, 172, data.Structure); // data["Structure"] does not work too in IE, it does in FF
// alert(html); // is displayed also in IE when uncommented
$('#structure').html(html);
// alert(html); // is displayed also in IE when uncommented
},
"json"
);
}
<div class="cssform">
<div><label>ID</label><input id="ID" type="text"/></div>
</div
<div id="structure"></div>
请注意,在我使用的另一个应用程序中:
var html = getObjectTag(182, 172, aData[0]);
$('td:eq(0)', nRow).html(html);
其中aData是调用函数的数组参数。这用于在jquery插件数据表中显示对象,这里对于IE 8和FF没有任何问题。
EDIT2:
进一步的“分析”让我相信无论出于何种原因,在IE中都找不到具有id =结构的div。
document.getElementById("structure").innerHTML = html;
导致错误“document.getElementById(...)”为null或不是对象。使用jquery选择器可能什么都不返回,因此没有进一步做任何事情并且没有错误发生。问题是,为什么找不到元素?对我毫无意义。
答案 0 :(得分:0)
确定。找到了答案:
<div class="cssform">
<div><label>ID</label><input id="ID" type="text"/></div>
</div <!-- Missing closing > which somehow was accepted by FF -->
<div id="structure"></div>