Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   С локалкой работает а с сетью нет. (https://javascript.ru/forum/events/13198-s-lokalkojj-rabotaet-s-setyu-net.html)

VOVOKA 19.11.2010 20:09

С локалкой работает а с сетью нет.
 
Потребовалось мне прочитать значения некоторых полей в загружаемых страницах сайтов.

Написал небольшой скрипт:

$(document).ready(function() {

var win=window.open("http://localhost/forum/newthread.php?do=newthread&f=13","","width=1000,he ight=350");
//alert(win);
//win.onload = a(win);
//alert(win);

//function a(wins) {
setTimeout(ass(),5000);
//}

function ass() {

//alert(win);
var l = win.document.forms[2].elements[0].value;
alert(l);
}


Сделал тестовую страницу. Попробовал на локалхосте. Все работает.
Попробовал на реальном скрипте также установленом локально. То же работает. Задавал задержки в 5, 7 и 10 секунд. За это время и страница подгружается и я успеваю внести хоть какие то данные в поля. Все нормально читается.

Попробовал с реальным сайтом из интернета. Не тут то было.
Не хочет читать и все. Пробовал читать и так как в скрипте и по id читать и по имени. Ничего, а на локалхосте все эти варианты работают.

Начал смотреть значение переменной win . При работе с сетью сразу после назначения выдает "объект виндос", а после задержки выдает неопределенность.
Попробовал поиграть с задержкой. Если поставить 0.5 секунды или меньше то эта переменная определяется, если больше то очищается. Ну и разумеется поэтому ни чего и не читается.

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

Вот отсюда и вопрос. Почему сбрасывается эта переменная при работе с сетью?

monolithed 19.11.2010 20:40

//window.onload = function(){
    setTimeout(function(){
      window.open("http://javascript.ru", "site", "width=420, height=230");
    },5000);
//};

VOVOKA 19.11.2010 21:02

Я наверное неточно объяснил. Речь идет о проверке значения полей в дочернем окне из основного окна.
Конструкция window.open разумеется будет работать но только с основным окном.
Что бы было понятнее, что это.
Я пишу плагин для WP для работы с библиотекой. В этой библиотеке будет множество ссылок для скачивания.
Но ссылки как известно вещь непостоянная и поэтому желательно иметь функцию которая будет проверять эти ссылки на доступность.

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

Поэтому и применяется переменная определяющая дочернее окно и именно с ней приходится работать.

И еще раз повторяю, что для сайта или другого скрипта установленного на локалхосте это все работает. А для сайтов из сети эта переменная сбрасывается.

monolithed 19.11.2010 21:07

Цитата:

Сообщение от VOVOKA
Но ссылки как известно вещь непостоянная и поэтому желательно иметь функцию которая будет проверять эти ссылки на доступность.

это нужно делать на стороне сервера

VOVOKA 19.11.2010 21:17

Цитата:

Сообщение от monolithed (Сообщение 79942)
это нужно делать на стороне сервера

Простите, но как я могу это сделать на стороне сервера. Это ведь не мои сайты. Речь идет об обычных файлообмениках.

Единственно что я могу, так это вызвать ту страницу которая указана в ссылке на скачивание и проверить ее отдельные поля. Но сделать это можно только на уже загруженных в браузер страницах.

Поэтому и применяю JS и пытаюсь динамически проверять страницы других (не своих) сайтов.

VOVOKA 19.11.2010 22:00

Может быть существуют какие то ограничения самого JS для работы с сетью.
Может быть это ограничения Денвера.
Ативирусник я отключал.
Что еще может быть. Почему переменная с хендлом дочернего окна сбрасывается и именно при работе с реальными сетевыми страницами.

Кто то сталкивался с такой проблемой.

micscr 20.11.2010 09:14

тут почитай.

VOVOKA 21.11.2010 01:49

Цитата:

Сообщение от micscr (Сообщение 79962)

Большое спасибо за ссылку. Почитал я то что там было. Может быть чего то и не понял, но понял что для работы по этим методикам нужен определенный код как на одной стороне, так и на другой стороне.

На своей стороне я могу добавить код, а вот на другой то как. Те сайты на которых мне нужно проверять поля ведь не мои. Я туда вмешиватся не могу.
Так что пока не вижу решения проблемы.

Может быть это апач в денвере блокирует дочернее окно или браузер. Сейчас ведь понакрутили всяких фишек по безопасности, а что они делают толком неведомо.

micscr 21.11.2010 08:43

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

subzey 21.11.2010 10:23

http://localhost/, надеюсь, заменили на реальный адрес?


Часовой пояс GMT +3, время: 10:14.