Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Вывести текст после body (https://javascript.ru/forum/events/52514-vyvesti-tekst-posle-body.html)

Jeick9 22.12.2014 22:01

Вывести текст после body
 
Здравствуйте.
Мне нужно добавить свой текст с помощью Js, сразу же после тега body. Получается только заменить содержимое body. Подскажите пожалуйста как это сделать?

krutoy 22.12.2014 22:27

сомневаюсь, что это получится. Браузер нынче черезчур умный пошел, он такой текст все равно в боди засунет, сука. А зачем?

Jeick9 22.12.2014 22:35

то есть, я имею ввиду вывести текст после первого тега: <body> текст

krutoy 22.12.2014 22:50

Если знаете, какой элемент идет первым, можно так
<html>
  <head>
  </head>

  <body>
<div>foo</div>
<div>bar</div>

<script>

d=document.createElement("div")
d.innerHTML="baz"
first=document.querySelector("div")
document.body.insertBefore(d, first)

</script>
</body>
</html>

krutoy 22.12.2014 23:03

впрочем, можно и не зная, вот так
<html>
  <head>
  </head>

  <body>
<div>foo</div>
<div>bar</div>

<script>

d=document.createElement("div")
d.innerHTML="baz"
first=document.querySelector(document.body.innerHTML.match(/<(.+?)>/)[1])
document.body.insertBefore(d, first)

</script>
</body>
</html>

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

Jeick9 22.12.2014 23:10

Спасибо, то что надо.

рони 23.12.2014 09:58

:)
<html>
  <head>
  </head>
  <body>
<div>foo</div>
<div>bar</div>
<script>
d=document.createElement("div")
d.innerHTML="baz"
document.body.insertBefore(d,document.body.firstChild)
</script>
</body>
</html>

:write:
<html>
  <head>
  </head>
  <body>
<div>foo</div>
<div>bar</div>
<script>
document.body.firstChild.data = "baz"
</script>
</body>
</html>

danik.js 23.12.2014 10:46

Цитата:

Сообщение от krutoy
Браузер нынче черезчур умный пошел, он такой текст все равно в боди засунет, сука

Только при парсинге. С DOM же такое провернуть можно:
<body>
<script>
    var element = document.createElement('div');
    element.textContent = 'После body';
    document.documentElement.appendChild(element);
    alert(document.documentElement.innerHTML);
</script>
</body>

danik.js 23.12.2014 10:47

Цитата:

Сообщение от krutoy
first=document.querySelector(document.body.innerHT ML.match(/<(.+?)>/)[1])

:lol: ну ты лох))

ruslan_mart 23.12.2014 14:11

Ну если чисто текст, то:

var text = document.createTextNode('Мой текст');
document.body.insertBefore(text, document.body.firstChild);


Аналогично варианту от рони, только без использования HTML-тэга.


Часовой пояс GMT +3, время: 17:16.