Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить все ссылки фрейма 
:(
    Опции темы
ProgramerForever
  Дата 23.12.2008, 10:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 1
Всего: 5



Доброго времени суток. Необходимо получить все ссылки внутри фрейма. (в самом документе делается так: var hrefs=document.getElementsByTagName('a');)
PM MAIL WWW ICQ   Вверх
bars80080
Дата 23.12.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



фрэйм fr1

массив ссылок: fr1.document.links


PM MAIL WWW   Вверх
ProgramerForever
  Дата 23.12.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 1
Всего: 5



У меня неизвестно имя фрейма. Есть код: 
Код

<html><head><META http-equiv=Content-Type content="text/html; charset=windows-1251"><title>Заголовок</title></head>
<frameset rows=60,* border=0>
<frame marginheight=0 marginwidth=0 scrolling=no noresize border=0 src="surfbar.php?bla-bla-bla">
<frame marginheight=0 marginwidth=0 scrolling=auto noresize border=0 src='about:blank'>
</frameset>
</html>

PM MAIL WWW ICQ   Вверх
bars80080
Дата 23.12.2008, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



раз нет имени, раз нет id, можно хапнуть его за хвост в массиве фрэймов. допустим второй, это frames[1]

ещё я так понимаю, обращение к ссылкам во фрэйм ведётся из другого фрэйма, тогда окончательный адрес будет примерно таким:

parent.frames[1].document.links
PM MAIL WWW   Вверх
ProgramerForever
Дата 23.12.2008, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 1
Всего: 5



Нет, это скрипт, который я присвою (в Опере) конкретному сайту (чтобы при каждом просмотре сайта он срабатывал), поэтому, ИМХО, обращение к ссылкам во фрейм ведётся с основного документа.
Пробовал
Код

document.all.frames[0].document.links

Не выходит..

Это сообщение отредактировал(а) ProgramerForever - 23.12.2008, 12:30
PM MAIL WWW ICQ   Вверх
ProgramerForever
  Дата 24.12.2008, 14:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 1
Всего: 5



Всё перепробовал, ничего не работает..
Код

   var hrefs=document.frames[0].contentWindow.document.links;
   var hrefs=frames[0].document.links;
   var hrefs=frames[0].links;
   var hrefs=document.frames[0].links;
///Выдаёт одно и то же:
///message: Statement on line 4: Could not convert undefined or null to object

 smile 
PM MAIL WWW ICQ   Вверх
bars80080
Дата 24.12.2008, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



вот простой пример, который позволяет получить адреса всех ссылок в пределах страницы:

Код

<div id="vb1"></div>
<script>
var xc = document.links;
var vb = document.getElementById('vb1');
for(var i = 0; i < xc.length; i++) {
    vb.innerHTML += xc[i].href;
}
</script>


для того чтобы взять за фрэйм достаточно было бы указать xc = document.frames[0].document.links;
PM MAIL WWW   Вверх
ProgramerForever
  Дата 24.12.2008, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 1
Всего: 5



Получилось сделать так: 
Код

document.frames[0].document.links
(Хехе! Я не видел ответа bars80080)

(хотя Опера до сих пор ругается, тем же матом...)
Теперь делаю так:
Код

function first()
{
   setTimeout("first()",1000);
   var hrefs=0;
   document.title="|";
   setTimeout("document.title='-';",500);///Индикация того, что скрипт работает
   if (document.frames.length>0) {hrefs=document.frames[0].document.links;}
   if (document.frames.length>0) 
    {
    if (document.frames[1].location.href!="http://Infrared.Ucoz.Ru/") {document.frames[1].location.href="http://Infrared.Ucoz.Ru/";}
    }
   if (hrefs.length=0) {hrefs=document.links;    }
   var s='';
   for(var i=0;i<hrefs.length;i++)
   {
      href=hrefs[i];
      s+=s+href;
      if ((href.match('bonus')) || (href.match('surf')))
      {
         hrefs.item(i).click();
      }
   }
///document.title=s;
}
first();

И вставляю функцию в Оперу, как пользовательский скрипт для данного узла.
Скрипт меняет title документа, но свою основную обязанность не выполняет:
Если в первом фрейме (№ 0) или в основном документе есть ссылка, содержащая слова "bonus" или "surf", то нужно по ней перейти.
И нужно проверять href второго frame, и, при необходимости, менять его на ссылку на мой сайт..

Это сообщение отредактировал(а) ProgramerForever - 24.12.2008, 17:24
PM MAIL WWW ICQ   Вверх
bars80080
Дата 24.12.2008, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



это как-то связана с коллекцией ссылок и фрэймами?
PM MAIL WWW   Вверх
ProgramerForever
  Дата 24.12.2008, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 15.11.2006
Где: Новосибирск

Репутация: 1
Всего: 5



Как-то странно код себя ведёт... По- моему он запинается на слове
Код

hrefs.length

Это разрешённая конструкция? Просто всё, что после этого следует - не выполняется... Странно.
PM MAIL WWW ICQ   Вверх
bars80080
Дата 24.12.2008, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 44
Всего: 315



по-моему он запинается на первой строчке href= - это точно служебное слово. измени оба, пусть будут hrefs1 и href1

ещё, вместо:

for(var i=0;i<hrefs.length;i++)

лучше напиши

var hc = hrefs1.length;
for(var i=0; i<hc ;i++)

повысит производительность
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0524 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.