Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 14.05.2011, 04:32
Аватар для poorking
prodigy
Отправить личное сообщение для poorking Посмотреть профиль Найти все сообщения от poorking
 
Регистрация: 01.11.2010
Сообщений: 503

cool,
Иногда нужно проверить какому документу принадлежит элемент, в этом свойстве и хранится ссылка на него(document)
var div = document.createElement("DIV");
 
alert(div.ownerDocument === document);

var i = document.createElement("IFRAME");
	document.body.appendChild(i);

	//сравниваем ownerDocument с document-ом IFRAME-a
alert(div.ownerDocument === window.frames[0].document);

var span = window.frames[0].document.createElement("SPAN");

	//сравниваем ownerDocument элемента из IFRAME-a с текущим document

alert(span.ownerDocument === document);

Но похоже ты и сам уже разобрался
__________________
readOnly
Ответить с цитированием
  #12 (permalink)  
Старый 17.05.2011, 20:52
Интересующийся
Отправить личное сообщение для cool Посмотреть профиль Найти все сообщения от cool
 
Регистрация: 21.01.2011
Сообщений: 18

Да впринципе там не сложно, только запутался изначально для чего же этот метод используют, еще подумал такая запись большая.

Всем спасибо.

Subzey, спасибо, всего не прочитал, но по сути ты затронул корень темы. Конечно важно, но мне надо было пару примеров, в итоге сам разобрался.

Последний раз редактировалось cool, 17.05.2011 в 20:55.
Ответить с цитированием
  #13 (permalink)  
Старый 17.05.2011, 23:44
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

subzey, круто, вот только непонятно, как мы перешли от "Но можно ли вставить напрямую объект DOM из одного языка в документ на другом языке?", "можно ли вставить элемент класса MyMegaCoolDOMEngineElement как childNode объекту DOMElement (стандартному)?" к "А значит, может гарантировать лишь то, что всё это будет работать только в пределах одного отдельного документа." Т.е. может там действительно какие-то есть проблемы, но по-крайней мере для меня они не очевидны
Ответить с цитированием
  #14 (permalink)  
Старый 18.05.2011, 13:35
Аватар для subzey
Пионэр
Отправить личное сообщение для subzey Посмотреть профиль Найти все сообщения от subzey
 
Регистрация: 16.11.2009
Сообщений: 1,322

x-yuri,
Эх, я не преподаватель, и объясняю путанно.

Представьте себе: в браузер IE 6 добавляется плагин SVG, который XML. На странице есть собственно страница и DOM от неё и SVG и его собственный DOM. И тут мы пытаемся вставить элемент из SVG в HTML. Скажу сразу, это не получится. Но как проверить, а вдруг, можно?
Если element instanceof HTMLDocument, то, получается, что элемент из какого-нибудь xhr.responseXML тоже вставить нельзя. А, вот, его, как раз, можно (если я ничего не путаю).

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

W3C (WHATWG) — ужасные перестраховщики. Может быть, так и надо, если пишешь нормативную документацию для того, что будет работать отныне и вовеки веков. И они намеренно абстрагируются от имплементации (так и пишут, мы, мол, не классы описываем, а интерфейс, и мало волнует, как именно вы заставите это работать). А, значит, никакой нормативной документации про имплементацию написать не могут — не их епархия.

К DOM3, конечно, разродились абзацем, ну, который про importNode. Но, ведь, DOM начался с 1 версии. И там, по всей видимости, решили, что раз мы не можем обеспечивать целостность всех объектов класса интерфейса DOM, то будем обеспечивать хотя бы внутри одного. Я имею в виду document, рассматривая все ноды «внутри» него так или иначе его свойствами.

Ладно… Надеюсь, я пояснил, а не запутал еще дальше.
Ответить с цитированием
  #15 (permalink)  
Старый 18.05.2011, 18:22
Аватар для x-yuri
Отправить личное сообщение для x-yuri Посмотреть профиль Найти все сообщения от x-yuri
 
Регистрация: 27.12.2008
Сообщений: 4,201

сразу скажу, что xml-элемент можно вставить в опере и ff. Chrome/safari выдают "WRONG_DOCUMENT_ERR: DOM Exception 4", ie 6, 7, 8 - "No such interface supported", ie 9 - "DOM Exception: HIERARCHY_REQUEST_ERR"

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title></title>
</head>
<body>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/mootools/1.3.0/mootools-yui-compressed.js"></script>
	<script type="text/javascript">
		new Request({'url': 'test.xml': function(r, doc){
			try {
				document.body.appendChild(doc.documentElement);
			} catch(e) {
				$(document.body).appendText('exception: '+e.message);
			}
		}})
			.get();
	</script>
</body>
</html>

test.xml:
<?xml version="1.0" encoding="utf-8" ?>
<root>test</root>

но я в общем-то о том, что я не вижу проблем с перемещением элементов между одинаковыми "типами" документов. По-крайней мере я так понял твою фразу (может гарантировать лишь то, что всё это будет работать только в пределах одного отдельного документа)

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

по поводу перестраховщиков... мне кажется сейчас не все так печально (с появлением whatwg). Да и на перестраховку это не очень похоже. Ладно, не именно это. Именно это вообще ни на что не похоже А w3c мне неслабо напоминают architecture astronauts, хотя и их понять можно

Последний раз редактировалось x-yuri, 18.05.2011 в 18:35.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск