我正在进行AJAX POST调用以获取一些HTML。我把那个HTML并将其注入DOM。除了IE< = 8之外,所有浏览器中的一切都运行良好和花花公子。似乎IE正在解析传入的HTML,因为当我将其记录到控制台/提醒它时,标签是大写字母。
它要删除的行:
<form class="uniForm" enctype="multipart/form-data" action="/profile/editprofile/" method="post">
非常奇怪,因为结束标记在那里,但开始标记不是。该调用是一个标准的jQuery POST($ .post())。
更新
结束放弃并将其放入嵌入式文本区并重新注入DOM:
<!--[if lt IE 9]>
<textarea class="ieHackTextArea">
<!--[if lt IE 9]>
<![endif]-->
......其他地方......
if ($.browser.msie && parseFloat($.browser.version) < 9) {
ui.panel.innerHTML = $(".ieHackTextArea").val(); // jQuery injection doesn't work
}
答案 0 :(得分:12)
我今天遇到了完全相同的问题并设法通过在<pre></pre>
之前插入一个空<form>
来修复它,它以某种方式停止IE8
(尚未在其他版本中测试过) )从删除<form>
。
答案 1 :(得分:1)
您可以尝试将所有表单包装到<div>
中,看看它是否更有效。
我遇到了与<input>
对象相同的问题,这是我的解决方案,以确保它在IE8中正常工作。
答案 2 :(得分:0)
我有完全相同的情况,同样的问题略有扭曲。我得到一个输入类型=隐藏标记,删除以及表单标记。 我没有找到发生这种情况的原因。自去年8月以来,有没有人发现这个问题的新内容?
此外,我尝试将表单包装在div标签中,并且没有任何更改。如果我写一些文字,或者$ nbsp;在表单标记上方的一行上,表单将呈现。
我也可以确认这个问题在IE7中也是如此(如果重要的话)。
答案 3 :(得分:0)
解决方案快速而简单,只需删除操作中的最后一个斜杠=&#34;&#34;表单标记的属性(仅在URL中)。
示例:
错误(IE)
<form action="http://mywebsite.com/something/">
</form>
<强> CORRECT 强>
<form action="http://mywebsite.com/something">
</form>
仅在表单操作结束时删除斜杠=&#34;&#34;。
答案 4 :(得分:0)
在javascript处理程序中使用navigator.userAgent来识别浏览器并应用suiatble逻辑。与“CSS hack”相比,它是直截了当的。 您可以在此处参考http://www.useragentstring.com/pages/Internet%20Explorer/
IE的userAgent很可能会携带字符串MSIE(Miscrosoft internextExplorer或许:D)
基本上:
if(navigator.userAgent.indexOf('MSIE 7.0') > -1){
/* Do watever suitable for IE7 here */
}else if(navigator.userAgent.indexOf('MSIE 8.0') >-1){
/* Do watever suitable for IE8 here */
}else{
/* The rest... */
}