Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как выдернуть ссылки из фрейма
 
 автор: Leonline   (23.05.2008 в 12:46)   письмо автору
 
 

Помогите разобраться, есть html страница

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title>TEST</title>
</head>
<script language="javascript" src="test.js"></script>
</html>
 

файл test.js содержит

document.write('<frameset frameborder="0" framespacing="0" border="0" rows="100%,*" noresize><frame id="fr" src="file.php" noresize></frameset>');
 

какой код нужно добавить в файл test.js чтоб после загрузки фрейма внизу страницы выводились все ссылки каторые присутствуют в фрейме. Пробовал так

for (var i = 0; i < document.links.length; i++) {
        document.write(document.links[i]+'<br>');
}
 

работает только если вставить код в тело фрейма а мне оч нужно чтоб код был в файле test.js

   
 
 автор: PAT   (23.05.2008 в 14:21)   письмо автору
 
   для: Leonline   (23.05.2008 в 12:46)
 

function f ()
{
var w = document.frames [0].document;

for (var s = [], j = 0; j < w.links.length; j++) 
s [j] = w.links [j].cloneNode (1);

var BR1 = w.createElement ('br');
for (var j = 0; j < s.length; j++)
   {
   w.body.appendChild (s [j]);
   w.body.appendChild (BR1.cloneNode (0));
   }
}
document.write('<frameset onload="f()" frameborder="0" framespacing="0" border="0" rows="100%,*" noresize><frame id="fr" src="file1.php" noresize></frameset>');

* "Низ страницы" - это документ внутри фрейма с id="fr", ибо иного места для размещения ссылок на странице НЕТ.
** Полагаю, что вам всё-же нужно немного не то, что вы описали в качестве задачи.
Но это - ВАШИ проблемы: как задачу поставили - такое решение и получили :-)
Фантазировать за вас не буду.

   
 
 автор: Leonline   (23.05.2008 в 15:44)   письмо автору
 
   для: PAT   (23.05.2008 в 14:21)
 

к сожалению не работает код, эксплорер показывает ошибку
Строка: 6
Символ: 1
Ошибка: Объект не поддерживает это свойство или метод
URL-адрес: http://localhost/test/test.html

**ВЫ правильно пологаете что мне нужно немного, мне нужен масив links из фрейма с id="fr" чтоб сделать редирект по первой ссылке из этого масива

чтото наверно вот так, но тоже не работает

var w = document.frames[0].document; 
window.location = w.links[0];

   
 
 автор: PAT   (23.05.2008 в 16:45)   письмо автору
 
   для: Leonline   (23.05.2008 в 15:44)
 

1. Всё РАБОТАЕТ. И - если заменить document.frames на window.frames - не только в Эксплорере, а и ВЕЗДЕ.
Проверьте на примере. Индексный файл:
<html>
<head>
<script>
function f ()
{
var w = window.frames [0].document;

for (var s = [], j = 0; j < w.links.length; j++) 
s [j] = w.links [j].cloneNode (1);

var BR1 = w.createElement ('br');
for (var j = 0; j < s.length; j++)
   {
   w.body.appendChild (s [j]);
   w.body.appendChild (BR1.cloneNode (0));
   }
}
document.write('<frameset onload="f()" frameborder="0" framespacing="0" border="0" rows="100%,*" noresize><frame id="fr" src="file1.htm" noresize></frameset>');
</script>
</head>
</html>

И файл file1.htm, лежащий в той же папке, что и индексный файл:
<html>
<body>
<a href="http://google.com/">link1</a><br>
<a href="http://yandex.ru/">link2</a>
<hr>
</body>
</html>

Если у вас ошибка, то два варианта:
а) Или вы намудрили с содержанием файла file.php (например, там у вас нет тега <BODY> вовсе).
б)Или же файл file.php - ЧУЖОЙ (т.е. не с того же домена, что и индексный файл). Эта проблема (с чужим файлом во фрейме) НЕ РЕШАЕТСЯ - в htm-формате можно обрабатывать только СВОИ файлы.

3. window.location = w.links[0]; - это БРЕД.
Надо так: window.location.href = w.links [0].href;
Или вовсе без присвоения: w.links [0].click ();

   
 
 автор: Leonline   (23.05.2008 в 17:25)   письмо автору
 
   для: PAT   (23.05.2008 в 16:45)
 

Да файл который будет во фрейме с другого сервера подгружается, получается что не как не реализовать редирект по первой ссылке? Или может можно это по другому реализовать не через масив links?

   
 
 автор: PAT   (23.05.2008 в 17:57)   письмо автору
 
   для: Leonline   (23.05.2008 в 17:25)
 

Читать умеете?
Я же написал - в htm-формате работать с чужими документами нельзя.
С чужими документами можно работать в формате HTA - но только тогда, когда hta-файл будет размещен на вашем компьютере, а не на сервере.

Т.е. если вышеприведенный код индексного файла сохраните с расширением HTA и запустите его с вашего компьютера (и вместо file1.htm в SRC фрейма пропишете, например, http://google.com), то все сработает без проблем.
Если же разместите этот файл (с раширением HTA) на сервере, то браузер его открывать для работы не будет, а будет предлагать скачивать его на компьютер.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования