С локалкой работает а с сетью нет.
Потребовалось мне прочитать значения некоторых полей в загружаемых страницах сайтов.
Написал небольшой скрипт: $(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, но оно возникает раньше чем страница выводится на экран и все равно нужна задержка. Вот отсюда и вопрос. Почему сбрасывается эта переменная при работе с сетью? |
//window.onload = function(){ setTimeout(function(){ window.open("http://javascript.ru", "site", "width=420, height=230"); },5000); //}; |
Я наверное неточно объяснил. Речь идет о проверке значения полей в дочернем окне из основного окна.
Конструкция window.open разумеется будет работать но только с основным окном. Что бы было понятнее, что это. Я пишу плагин для WP для работы с библиотекой. В этой библиотеке будет множество ссылок для скачивания. Но ссылки как известно вещь непостоянная и поэтому желательно иметь функцию которая будет проверять эти ссылки на доступность. Страниц для скачивания много и поэтому и возникает необходимость вызывать эти страницы в дочернее окно, проверять некоторые поля и затем переходить к другому окну с другого сайта. Поэтому и применяется переменная определяющая дочернее окно и именно с ней приходится работать. И еще раз повторяю, что для сайта или другого скрипта установленного на локалхосте это все работает. А для сайтов из сети эта переменная сбрасывается. |
Цитата:
|
Цитата:
Единственно что я могу, так это вызвать ту страницу которая указана в ссылке на скачивание и проверить ее отдельные поля. Но сделать это можно только на уже загруженных в браузер страницах. Поэтому и применяю JS и пытаюсь динамически проверять страницы других (не своих) сайтов. |
Может быть существуют какие то ограничения самого JS для работы с сетью.
Может быть это ограничения Денвера. Ативирусник я отключал. Что еще может быть. Почему переменная с хендлом дочернего окна сбрасывается и именно при работе с реальными сетевыми страницами. Кто то сталкивался с такой проблемой. |
|
Цитата:
На своей стороне я могу добавить код, а вот на другой то как. Те сайты на которых мне нужно проверять поля ведь не мои. Я туда вмешиватся не могу. Так что пока не вижу решения проблемы. Может быть это апач в денвере блокирует дочернее окно или браузер. Сейчас ведь понакрутили всяких фишек по безопасности, а что они делают толком неведомо. |
тут дело наверное в системе безопасности браузера. Аякс запросы например нельзя на другой домен отправлять. А ты всплывающее окно с другого домена читать собрался, причем именно текущие значения полей. Может это(не проверял).
|
http://localhost/, надеюсь, заменили на реальный адрес?
|
Часовой пояс GMT +3, время: 10:14. |