Давайте предположим, что у меня есть что-то вроде этого:
<html>
...
<div>
<iframe src="test.html" hash="r4d5f7"></iframe>
<iframe src="test.html" hash="8f7x97"></iframe>
<iframe src="test.html" hash="gg4v5e"></iframe>
<iframe src="test.html" hash="e54f87"></iframe>
</div>
...
</html>
test.html является пустой страницей, пользовательской hash
атрибут всегда имеет другое значение, обе страницы находятся на том же домене из соображений безопасности, число и порядок iframe элементов случайны.
Мой вопрос: существует ли способ добраться от внутренней страницы (test.html) с помощью JavaScript для его надлежащего iframe элемента? Скажем, я нахожусь на странице третьего iframe, и я должен получить к ее iframe элементу и предупреждению () значение хэш-функции (в этом случае "gg4v5e").
Быть более конкретным. Если Вы знакомы с Firebug Firefox, он визуализирует эту такую ситуацию:
<html>
...
<div>
<iframe src="test.html" hash="r4d5f7">
<html>
...
</html>
</iframe>
<iframe src="test.html" hash="8f7x97">
<html>
...
</html>
</iframe>
<iframe src="test.html" hash="gg4v5e">
<html>
...
</html>
</iframe>
<iframe src="test.html" hash="e54f87">
<html>
...
</html>
</iframe>
</div>
...
</html>
Действительно ли возможно назвать "что-то" для получения родительского элемента (<iframe>
) когда я со своим JavaScript в <html>
элемент на внутренней странице?
Конечно, есть. Этот код работает в FF и IE6, Opera, Chrome (требуется веб-сервер и оба файла из одного протокола и порта домена)
function getHash() {
var ifs = window.top.document.getElementsByTagName("iframe");
for(var i = 0, len = ifs.length; i < len; i++) {
var f = ifs[i];
var fDoc = f.contentDocument || f.contentWindow.document;
if(fDoc === document) {
alert(f.getAttribute("hash"));
}
}
}