<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Page</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<style type="text/css">
</style>
</head>
<body>
<script type="text/javascript">
function foo() {
var node1 = document.getElementById('1');
var node2 = document.getElementById('2');
var newNode = node1.cloneNode(true);
node2.appendChild(newNode);
}
</script>
<div id="1">
<div>Вложение в первый див</div>
</div>
<div id="2" onclick="foo()">
<div>Вложение во второй див</div>
</div>
</body>
</html>
Проблема JavaScript в Опере
Существует следующая проблема.
Имеется следующая структура:
<div id="main">
<div id=3>
<div id=4></div>
</div>
<div id=1>
<div id=2></div>
</div>
</div>
Необходимо при помощи JS переместить контейнер <div id=3> вместе с его предками в контейнер <div id=1>. Делаю так:
var mainNode //отец узлов Node1 и Node3
var Node1 //узел для div id=1 каким-то образом получаем
var Node3 //узел для div id=3 каким-то образом получаем
var copyNode=Node3.cloneNode(true) // делаем копию перемещаемого узла
mainNode.removeChild(Node3); //удаляем узел Node1 из mainNode
Node1.appendChild(Node3); //добавляем в узел Node1 в Узел Node3
В результате в IE и FF всё работает отлично, но Опера жёстко косячит.
А именно, после того как перемещение произошло, узел Node1, визуально на странице встаёт в самый вверх, а после него идёт большой пробел, а потом следует содержимое узла Node3. Как избавится от этого пробела???
P.S. Объяснил как смог :)
Код:
Отлично везде работает. И ни каких пробелов не вижу...
Короче, за****ся я на этой неделе в телепатов играть. В общем в студию:
1) полный код страницы (не забываем обрамлять тего CODE!!! :mad: );
2) скриншот страницы с указанием красными стрелочками, что там не так;
3) версии браузеров.
возможно даже дело в стилях...
Я меня такие же подозрения. Но в телепатов надоело играть. Народ спрашивает, а привести код не удосуживается. Видимо решения проблемы им нахрен не нужно.
Версия Оперы 8.5. Если код весь привести, то придётся очень много разбираться. Скорее всего дело не в стилях, т.к. Опера ведёт себя очень странно. После осущесвления данной операции, если вывести сообщением обычным alert("Hello!"), то всё встаёт на свои места. Т.е. получается, что браузер не отрисовывает полученное. И вот было решено не заморачиваться и не оптимизировать под оперу.