Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > jquery html() сжирает теги <body>


Автор: neoks 23.2.2012, 17:41
При вызове функции .html() пропадают теги <body><head>, подскажите можно их как то сохранить или может есть какой та плугин для сохранения smile

Автор: 502 23.2.2012, 18:07
телепаты в отпуске  smile 

Автор: neoks 23.2.2012, 19:05
Ну я думал понятно, думаю все знаю что такое jquery  smile 
Ну ладно, попробую объяснить на примере.
Код

<div id="content">
<!DOCTYPE HTML>
<head>
<title>sl-cms2</title>
<meta name="keywords" content="" />
</head>
<body>
This is body!!!!
</body>
</html>
</div>


Вызов функции 
Код

var data = $('#content').html();
alert(data);


Результат
Код

<title>sl-cms2</title>
<meta name="keywords" content="" />
This is body!!!!


Автор: ksnk 23.2.2012, 21:27
neoks, jQuery тут ни при чем. Сам броузер фигеет от того, что ему подсовывают корявый html и убирает странные с его точки зрения теги.
Проверить это довольно легко - достаточно посмотреть FireBug'ом на структуру документа после вставки такого куска.


Автор: neoks 23.2.2012, 21:35
Блин, как я сам не додумался посмотреть, тогда вопрос как это дело провернуть ?  smile 
Замена не подходит, а все это дело нуно оставить, интересно как сказать браузеру чтоб не трогал не чего )

Автор: bars80080 23.2.2012, 22:26
Цитата(neoks @  23.2.2012,  21:35 Найти цитируемый пост)
а все это дело нуно оставить, интересно как сказать браузеру чтоб не трогал не чего

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

Автор: Evghenusi 23.2.2012, 22:45
глупость наверно скажу  smile , но в айфрэйм этот код засунуть нельзя?

Автор: neoks 24.2.2012, 00:04
Все и так в айфрэйме
Пробовал:
Код

$('#iframe').contents().html();


Не помогло, null возвращает, нужно каким то макаром все достать а как хз )

Автор: Evghenusi 24.2.2012, 00:12
1) neoks, в вашем примере айфрэйм не разглядел.
2) после того как сообщение оставил, попробовал сам, получилось, но contents() не использовал, взял ваш пример и просто div сменил на iframe

Автор: neoks 24.2.2012, 00:31
Ну такc, contents() служит для связи с тегом <iframe> и поиск внутри него, а я оттуда и беру html, но мне нужно все что содержит iframe внутри оттуда достать, как говорил bars80080 теги ставить нельзя перед <!DOCUMENT>, так как же мне достать весь HTML пока ума не приложу  smile

Добавлено @ 00:33
Код

<iframe src="data.html" id="iframe"></iframe>

Код

$('#iframe').html();

Результат пустой )

Автор: Evghenusi 24.2.2012, 00:38
видимо я суть не улавливаю  smile 
Цитата(neoks @  24.2.2012,  00:31 Найти цитируемый пост)
contents() служит для связи с тегом <iframe>
поздравляю
Цитата(neoks @  24.2.2012,  00:31 Найти цитируемый пост)
и поиск внутри него
ещё раз поздравляю

Цитата(neoks @  24.2.2012,  00:31 Найти цитируемый пост)
но мне нужно все что содержит iframe внутри оттуда достать
Цитата(Evghenusi @  24.2.2012,  00:12 Найти цитируемый пост)
после того как сообщение оставил, попробовал сам, получилось, но contents() не использовал, взял ваш пример и просто div сменил на iframe 
зачит так не подходит? почему?

Цитата(neoks @  24.2.2012,  00:31 Найти цитируемый пост)
как говорил bars80080 теги ставить нельзя перед <!DOCUMENT>
я вроде бы не предлогал что либо ставить перед доктайпом

Добавлено @ 00:39
Цитата(neoks @  24.2.2012,  00:31 Найти цитируемый пост)

Результат пустой )
 smile , а вот это уже интересно

Добавлено @ 00:43
http://jsfiddle.net/SxvzK/
вот то что при таком "методе" некоторые символы заменяются HTML сущностями - признаю  smile , но за-то все тэги  smile 

Автор: neoks 24.2.2012, 00:54
Не знаю как там сервиcы работают, но!, iframe не так пишется а пишется вот так и для этого нужен contents()
index.html
Код

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <title></title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
</head>
<body>
    <iframe src="iframe.html" id="content"></iframe>
    <script>
    var data = $('#content').html();
    alert(data);
    </script>
</body>
</html>

iframe.html
Код

<!DOCTYPE HTML>
        <head>
        <title>sl-cms2</title>
        <meta name="keywords" content="" />
        </head>
        <body>
        This is body!!!!
        </body>
        </html>

Результат пустой, вот о чем я говорил  smile 

Автор: Evghenusi 24.2.2012, 01:07
neoks, раз вы так хорошо знаете что и как пишется, и что для чего нужно, то в чём проблема?  smile 

Автор: neoks 24.2.2012, 01:20
Ну проблема в том что я не могу достать весть HTML из фрейма так как не знаю каким макаром, один способ есть но как я говорил пропадают теги <body><head>  smile 

Автор: Evghenusi 24.2.2012, 01:35
хммммм, что-то где не смотрю везде после contents() используется метод find(), но нигде не показанно как получить весь html)

Автор: ksnk 24.2.2012, 07:13
Код

<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <title></title>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.7.1.min.js"></script>
    <script>
$(function(){
$('#content').bind('load',function(){
    var data = $('#content').contents().find("html body").html();
    alert(data);
});
})
    </script>
</head>
<body>
    <iframe src="iframe.html" id="content"></iframe>

</body>
</html>

Автор: neoks 24.2.2012, 12:47
ksnk он та достал, но достал внутри html body а сами теги нет, к томом уже не находит сам тег html, сделал так
Код

$('#content').contents().find("html body").wrap('<div></div>').parent().html();

Удалось достать body, но все остальное исчезло )

Автор: neoks 24.2.2012, 19:42
Нашел решение, сделал через PHP, тупо дублировал теги с другим названием  smile  как не странно но помогло ))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)