Тег сценария с загруженными type = "text / html" и src = "...", но игнорируется jQuery - PullRequest
5 голосов
/ 10 июля 2011

На моей странице есть тег:

    <script id='header' src='/Templates/Shared/Header.tmpl.html' type='text/html'></script>

Firebug сообщает мне, что Firefox 5 запрашивает этот ресурс. На вкладке HTML я могу перейти к элементу script и увидеть, что он содержит содержимое /Template/Shared/Header.tmpl.html.

jQuery, однако, настаивает на том, что тег script является пустым. $ ('# header'). html () возвращает пустую строку. Я не понимаю почему.

Да, я могу загрузить файл с помощью $ .get () и использовать $ ('# header'). Html (data) для установки содержимого. Тогда я могу использовать это, как я и ожидал. Это, очевидно, генерирует второй запрос, который я хотел бы избежать.

Ответы [ 2 ]

5 голосов
/ 04 января 2013

Я знаю, что это старо, но ответ прост.Тег скрипта просто не содержит текста или html.

<script id='...' src='...' type='...'></script>

В теге нет элементов или текста.Сценарий будет запрошен и загружен в память (если тип сценария имеет обработчик), но сам текст не будет вставлен в DOM.

1 голос
/ 06 июля 2016

Это старая проблема, но она все еще существует в Firefox. Я использую обходной путь для этого:

function getHtml(selector) {
  var $element = $(selector);
  var html = $element.html();

  if (!html ) {
    // copy all the children elements to a dummy DIV, which, unlike the SCRIPT have no problem providing the html in Firefox
    html= $('<div />').append($element.children().clone()).html();
  }
  return html;
}
...