Firefox innerHTML Ошибка? - PullRequest
7 голосов
/ 31 мая 2010

У меня есть простой фрагмент HTML

<p id="skills">Skills</p>

в Firefox 3.6.3, когда я звоню (с JQuery):

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

Firefox отображает его как

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

Где в мире эта ссылка приходит от ??

(заметьте, что то же самое происходит, вызывая $("#skills").html("some new text") с JQuery)

Ответы [ 3 ]

7 голосов
/ 31 мая 2010

Это не ошибка в Firefox, вы получаете вначале дополнительные <a></a> ... Я бы отключил все ваши плагины и попробовал бы снова, что-то конкретное в вашей установке мешает.

Полагаю, вы просматриваете это с помощью Firebug. Точный пример, который вы привели выше (больше ничего на странице), делает то же самое? Вы можете попробовать демо здесь: http://jsfiddle.net/Wcjk9/

Обновление:

Ваш пример действительно показывает странное поведение в Firefox, однако это «разрешено» делать. Так как у вас неверный HTML, браузер может и даёт здесь какое-то странное поведение. Синтаксический анализатор / обработчик сценариев в браузере могут свободно предполагать, у вас есть действительный HTML, например, уникальные идентификаторы. Если у вас есть недействительный HTML, хорошо ... он не может нести ответственность. Я должен включить эту цитату :

Два раза меня спрашивали: «Помолитесь, мистер Бэббидж, если вы введете в машину неправильные цифры, будут ли правильные ответы?» Я не могу правильно понять тот тип замешательства, который мог бы спровоцировать такой вопрос.

Игнорируя ошибки, которые добавляет jsbin, Вы можете увидеть проблему здесь (первая ошибка проверки). Вам не разрешено иметь элемент блока внутри якоря. Вы можете иметь встроенный элемент, если вы замените <p> в вашем примере на <span>, у вас будет действительный HTML ... и это странное поведение исчезнет:)

1 голос
/ 01 июня 2010

Оказывается, мой пример кода исключил часть, которая является реальной проблемой, вот рабочая страница примера, чтобы показать проблему. Когда вы изменяете 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>

Возможно, это не «ошибка», но, похоже, 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>
1 голос
/ 31 мая 2010

Я подозреваю, что на вашей стороне есть аддон, или ваш HTML каким-то образом поврежден. Попробуйте отключить ваши дополнения и запустить HTML через валидатор (http://validator.w3.org).

Кроме того, если все, что вы собираетесь изменить, это текст и не добавляете HTML, я бы рекомендовал использовать функцию text вместо функции html (хотя я сомневаюсь, что это решит вашу проблему, говоря, что это правильный инструмент для работы)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...