jQuery.html () удаляет скрипты и стили - PullRequest
1 голос
/ 20 мая 2010

Есть ли способ использовать jQuery.html () и не потерять скрипты и стили? или любой другой способ не JQuery?

Я пытаюсь вывести полный HTML-код страницы, на которой находится пользователь. Это вообще возможно?

Ответы [ 2 ]

2 голосов
/ 20 мая 2010

jQuery.html () удаляет скрипты и стили

Это не мой опыт (см. Ниже). На практике вы должны знать, что при запросе DOM для HTML-строк вы всегда будете получать интерпретируемый HTML, а не оригинал, и будут причуды (например, в IE все имена тегов HTML находятся в верхнем регистре). Это связано с тем, что функция jQuery html основана на свойстве браузера innerHTML, которое немного отличается от браузера к браузеру. Но приведенная ниже демонстрация включает теги style и script в Chrome 4, IE7 и Firefox 3.6; Я не пробовал других, но ожидал, что с ними все будет в порядке.

Если вы хотите получить содержимое внешних ссылок, а также встроенный контент, вам, естественно, придется проанализировать результат и следовать src (на script с), href (на link с rel = "таблицей стилей") и т. Д. *

Демо-версия:

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8">
<title>Test Page</title>
<style type='text/css'>
body {
    font-family: sans-serif;
}
</style>
<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js'></script>
<script type='text/javascript'>
(function() {
    $(document).ready(pageInit);

    function pageInit() {
        $('#btnGo').click(go);
    }

    function go() {
        alert($('html').html());
    }
})();
</script>
</head>
<body>
<input type='button' id='btnGo' value='Go'>
</body>
</html>
0 голосов
/ 20 мая 2010

Я вижу 2 сценария здесь

  1. вы используете jQuery.html (yourHTML) для перезаписи всего html страницы, поэтому даже теги сценария были перезаписаны ...
  2. Вы используете jQuery.html (), чтобы получить весь документ HTML. если это так, вам нужно убедиться, что элемент, в котором используется функция .html (), это весь html ... как T.J. Crowder предложил $('html').html()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...