stackoverflow.com/questions/14687981/...

я есть эти две страницы:

page1.html

http://vidasp.net/tinydemos/jquery-load-issue/page1.html

<!DOCTYPE html,>

<html>
<body>
    <div id="wrap"> </div>

    <script src="jquery.js"></script>
    <script> $(function() { $('#wrap').load('page2.html'); }); </script>
</body>
</html>

page2.html

http://vidasp.net/tinydemos/jquery-load-issue/page2.html

<!DOCTYPE html>

<html>
<head>
    <script> alert('Page 2 HEAD'); </script>
</head>
<body>
    <p> PAGE 2 </p>
    <script> alert('Page 2 BODY'); </script>
</body>
</html>

Как видите, я загружаю весь page2.html в элемент #wrap в page1.html. Обратите внимание, что page2.html содержит два элемента SCRIPT с вызовами функции alert () - один в заголовке страницы, а другой в теле страницы.

Проблема:

В Firefox 3.9, IE9 beta, Chrome (последняя версия) и Opera 11 выполняются оба оповещения. В Safari 5 выполняется только второе предупреждение.

Это ошибка Safari?

 user11371624 янв. 2011 г., 23:04
К сожалению, при вставке документа в документ между браузерами не всегда одинаковое поведение. Я не думаю, что вы можете назвать это ошибкой, потому что вы пытаетесь использовать недопустимый HTML, поэтому исправления (если таковые имеются) оставлены на усмотрение реализации. Готовы ли вы рассмотреть некрасивые решения?
 Šime Vidas24 янв. 2011 г., 23:16
@patrick Что ж, решение этой проблемы (очевидно) состоит в том, чтобы поместить все элементы SCRIPT в тело документа (где бы они ни находились):).
 user11371624 янв. 2011 г., 23:24
Да, если вы можете изменить серверную часть ответа, то это (или, более уместно, отправка только желаемого контента) было бы очевидным решением.

Ответы на вопрос(1)

Решение Вопроса

что это проблема Safari, но, возможно, не ошибка (и может случиться в других браузерах):

jQuery использует свойство браузера .innerHTML, чтобы проанализировать полученный документ и вставить его в текущий документ. Во время этого процесса браузеры часто фильтруют элементы из документа, такие как<html>, <title>, or <head> элементы. В результате элементы, извлекаемые с помощью .load (), могут не совпадать, как если бы документ был получен непосредственно браузером.

http://api.jquery.com/load/

Я предполагаю, что это относится к любому времени.load() используется не только при получении фрагментов. Но я думаю, что это было бы лучше, так как вы тянете контент в<body> элемент, который не включает<head> тег?

 Šime Vidas24 янв. 2011 г., 23:19
Отличный ответ. Нужно либо использовать идентификатор фрагмента, например:load('page2.html #content')или пусть page2.html будет просто HTML-фрагментом без части HEAD документа.
 prashu13205 февр. 2013 г., 04:05
помог мне ответить на ваш вопрос в поиске решения, спасибо ...stackoverflow.com/questions/14687981/...

Ваш ответ на вопрос