Firefox innerHTML Bug?

时间:2010-05-31 00:26:03

标签: jquery firefox

我有一个简单的HTML

<p id="skills">Skills</p>
当我调用(使用JQuery)时,在Firefox 3.6.3中

$("#skills")[0].innerHTML = "some new text"

Firefox将其呈现为

<p id="skills"><a xmlns="http://www.w3.org/1999/xhtml">some new text</a></p>

世界上哪个链接来自??

(注意通过使用JQuery调用$("#skills").html("some new text")来发生同样的事情)

3 个答案:

答案 0 :(得分:7)

这不是Firefox中的一个错误,你首先要在那里获得额外的<a></a> ...我会禁用你所有的插件并再试一次,你的安装上特定的东西会干扰这里。

我假设您正在使用Firebug查看此内容,上面给出的确切示例(页面中没有其他内容)是否也执行相同的操作?您可以在此处尝试演示:http://jsfiddle.net/Wcjk9/

<强>更新

你的例子确实在Firefox中显示了一些奇怪的行为,然而它是“允许”这样做的。由于您的HTML无效,浏览器可以并且确实在这里提供一些时髦的行为。浏览器中的解析器/脚本引擎可以假设您拥有有效的HTML,例如唯一ID。如果您的HTML无效,那么......它不能承担责任。我必须包含this quote

  

有两次我被问到,'请问巴贝奇先生,如果你把错误的数字输入机器,那么正确的答案会出来吗?'我无法正确地理解可能引发这样一个问题的想法混淆。

忽略jsbin添加的错误you can see the problem here(第一个验证错误)。不允许在锚点内部使用块元素。您可以有一个内联元素,如果您将示例中的<p>替换为<span>,您将拥有有效的HTML ...并且这种奇怪的行为会消失:)

答案 1 :(得分:1)

我怀疑你身边有一个插件,或者你的HTML有点格式错误。尝试通过验证程序(http://validator.w3.org)禁用插件并运行HTML。

此外,如果您打算更改的是文本而不添加任何HTML,我建议使用text函数而不是html函数(虽然我怀疑这会解决您的问题,只是说它是适合工作的工具)

答案 2 :(得分:1)

原来我的示例代码排除了实际问题的部分,这是一个显示问题的工作示例页面。当您更改链接中任何元素的html时,它将所有文本包装为

<a xmlns="http://www.w3.org/1999/xhtml">THE TEXT</a>

在我的演示中,当您单击“测试”链接时,它将用以下内容替换技能中的html:

<a xmlns="http://www.w3.org/1999/xhtml">some new text</a>

这可能不是一个“bug”,但似乎firefox是唯一能够做到这一点的浏览器。

<html>
  <head>
    <script src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
    <script type="text/javascript">
      function test() {
        $("#skills")[0].innerHTML = "some new text"
      }
    </script>
  </head>
  <body>
    <a href="#" onclick="test()">test</a>
    <a href="http://google.com">
      <p id="skills">Skills</p>
    </a>
  </body>
</html>