【问题标题】:innerHTML removing closing slash from image taginnerHTML 从图像标签中删除右斜杠
【发布时间】:2011-05-13 18:23:41
【问题描述】:

这很奇怪。这是一个快速测试功能:

function test_function(){
    code = '<img src="http://www.myimage.com/img.jpg" alt="image" />';
    alert(code);
    document.getElementById('test').innerHTML = code;
    alert(document.getElementById('test').innerHTML);
}

运行上面的代码将在第一个警报中显示/&gt;,但第二个警报不会,它只显示&gt;。所以看起来像应用到.innerHTML 会去掉正斜杠。任何想法如何阻止这种情况发生?我需要正斜杠进行验证。

【问题讨论】:

  • 你使用什么文档类型?
  • 您在哪些浏览器上遇到这种情况?
  • 如果浏览器删除了正斜杠,那么该文档类型中可能不需要它。
  • ttp://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" rel="nofollow" target="_blank">w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  • 但是你的网页是application/xhtml+xml吗?

标签: javascript image xhtml innerhtml


【解决方案1】:

第二个警报只是显示浏览器使用什么作为图像元素的内部表示。您不需要斜线进行验证,因为验证始终与页面的源有关,验证器不会执行动态添加元素到 DOM 的 JavaScript。

事实上,大多数浏览器在内部处理 XHTML 的方式与处理 HTML 相同,而不是作为文档的 XML 表示。只有当您发送带有 MIME 类型 application/xhtml+xml 的 XHTML 文档时,一些浏览器才会使用 XML 解析器呈现您的页面。

另请参阅 Ian Hickson 的 article

【讨论】:

  • 这一切都很好,除非您使用像 innerHTML 这样的东西将页面源代码保存到 ajax 页面编辑器中。
  • 对,所以如果我使用那个 mime,它可以在某些浏览器中工作。我需要一些肯定会火的东西,除了使用那个 mime 之外,我在网上找不到任何东西。
  • @David – 你不能在这里切换到 HTML 5 吗?当你不使用self-closing tags时,它会更宽容。
  • 要解决这个问题,请解析字符串并手动添加:stackoverflow.com/q/8764669/2065702
猜你喜欢
  • 1970-01-01
  • 2017-04-27
  • 1970-01-01
  • 2019-10-11
  • 1970-01-01
  • 1970-01-01
  • 2012-05-08
  • 2016-01-23
  • 2019-12-23
相关资源
最近更新 更多