Ошибка Firefox innerHTML?

У меня есть простая часть 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)

7
задан Richard JP Le Guen 31 May 2010 в 00:30
поделиться

3 ответа

Оказалось, что мой пример кода исключает часть, которая является фактической проблемой, вот рабочий пример страницы, чтобы показать проблему. Когда вы изменяете html любого элемента в ссылке, он оборачивает весь текст

THE TEXT

В моем примере, когда вы нажимаете на ссылку "test", он заменяет html внутри skills на:

<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
ответ дан 7 December 2019 в 03:12
поделиться

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

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

.
1
ответ дан 7 December 2019 в 03:12
поделиться

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

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

Обновление:

Ваш пример действительно показывает странное поведение в Firefox, однако ему "разрешено" это делать. Поскольку у вас недопустимый HTML, браузер может и действительно выдает странное поведение. Парсер/сценарий в браузере может предположить, что у вас действительный HTML, например, уникальные идентификаторы. Если у вас недопустимый HTML, что ж... он не может нести за это ответственность. Я должен включить эту цитату:

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

Не обращая внимания на ошибки, которые добавляет jsbin, вы можете увидеть проблему здесь (первая ошибка проверки). Вам не разрешается иметь блочный элемент внутри якоря. Вы можете иметь встроенный элемент, если вы замените

в вашем примере на , у вас будет валидный HTML... и это странное поведение исчезнет :)

.
7
ответ дан 7 December 2019 в 03:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: