Как выдернуть ссылки из фрейма
Помогите разобраться, есть html страница
Код:
<html> Код:
document.write('<frameset frameborder="0" framespacing="0" border="0" rows="100%,*" noresize><frame id="fr" src="http://site.ru/test.php" noresize></frameset>'); Код:
for (var i = 0; i < document.links.length; i++) { |
Внизу какой страницы? Основной, или загруженной во фрейм? Насколько я понимаю, страница с фреймами (не плавающими iframe) не может содержать ничего, кроме этих фреймов. Если дописывать надо во фрейм, то делать надо следующим образом. Нужно "взять" этот фрейм из DOM, собрать элементы <a> из него (обращаясь к документу через contentDocument или contentWindow). Но обратите внимание, что если фрейм будет подгружать страницу с домена, отличного от того, где находится сам файл в фреймом, ничего работать не будет. К сожалению, не могу сейчас проверить код на работоспособность, но ход мысли должен быть понятен:
var frame = document.getElementById("fr"); var frameDoc = frame.contentDocument && frame.contentWindow.document; var links = frameDoc.getElementsByTagName("a"); for(var i in links) { var link = links[i].getAttribute("src") && links[i].src; frameDoc.write(link); } Код должен быть запущен после полной загрузки фрейма, иначе нечего будет искать. Этого можно добиться, поставив его выполнение на событие onLoad элемента <frame>. |
IE выдает такую ошибку
frameDoc - есть NULL или не является объектом ставишь выполнение на событие onLoad элемента <frame> Код:
function f() { может ссылки можно выдернуть с помощью регулярки, тем более что задача соостоит не втом чтоб вывести их на экран а втом что нужно перенаправить юзера по первой ссылке из фрейма |
Leonline,
Сайт во фрейме и основной сайт находятся на одном домене? Попробуйте так, я просто опечатался: var frameDoc = frame.contentDocument && frame.contentWindow.document; Я еще ближе к вечеру посмотрю, может пойму в чём проблема. |
Сайт во фрейм загружается с другого домена.
Попробовал так Код:
var frameDoc = frame.contentDocument && frame.contentWindow.document; |
Цитата:
|
Leonline,
Я в коде опечатался дважды правильно было бы вот так: var frameDoc = frame.contentDocument || frame.contentWindow.document; Но это всё равно не поможет, если ифейм подгружает сайт с другого домена - политика безопасности запрещает документам с разных доменов "общаться" между собой. |
frame.contentDocument - это для кого?
|
Цитата:
Заранее благодарен. |
tenshi,
Цитата:
|
Часовой пояс GMT +3, время: 12:37. |