Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Про insertAdjacentElement (https://javascript.ru/forum/events/43253-pro-insertadjacentelement.html)

SeMiTr 28.11.2013 17:35

Про insertAdjacentElement
 
У меня появилась проблема при решении задачи из учебника этого сайта. Всё что не относится к ошибке я удалил

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<style>
body {
height: 2000px;
</style>
</head>
<body>
<a href="#" id="link2" data-tooltip="HTML<br>подсказка">Еще ссылка</a>

<script>
document.body.onmouseover = function(e) {
var event = e || window.event;
var target = event.target || event.srcElement;
if (target.tagName=='A'){
var newDiv = document.createElement('div');
newDiv.innerHTML = target.getAttribute('data-tooltip');
target.insertAdjacentElement('beforeBegin', newDiv);
}
}
</script>
</body>
</html>

Ошибка в последней строке скрипта: 'insertAdjacentElement - не функция'. И все аналогичные операторы в разных модификациях давали ту же ошибку. Что же это, если не функция?

danik.js 28.11.2013 17:59

А браузер какой? В хроме все отлично.
<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<style>
body {
height: 2000px;
</style>
</head>
<body>
<a href="#" id="link2" data-tooltip="HTML<br>подсказка">Еще ссылка</a>

<script>
document.body.onmouseover = function(e) {
var event = e || window.event;
var target = event.target || event.srcElement;
if (target.tagName=='A'){
var newDiv = document.createElement('div');
newDiv.innerHTML = target.getAttribute('data-tooltip');
target.insertAdjacentElement('beforeBegin', newDiv);
}
}
</script>
</body>
</html>

SeMiTr 28.11.2013 19:33

Firefox 25.0.1. Собственно ошибка возникает при наведении на ссылку.

danik.js 29.11.2013 10:30

Короче, этот метод не стандартизирован. Изначально его придумал Microsoft. Почему его реазиловали в хроме - фиг знает.
Стандартизировать его не собираются, так как он полностью заменяется другими методами.

Так вместо
target.insertAdjacentElement('beforeBegin', newDiv);

пиши
target.parentNode.insertBefore(newDiv, target);

SeMiTr 29.11.2013 12:17

Спасибо)


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