Как обработать вебстраницу не показывая ее?
Как обработать вебстраницу не показывая ее?
То есть у меня есть УРЛ страницы и мне не надо ее показывать а только кое что считать или посчитать. Но не загружать. |
А можно, по подробнее и по понятнее.
|
Загрузить в скрытый iframe.
|
Спасибо. если можно напишите фрагмент скрипта. Я только вчера начал учить джс.
А есть такой способ создать объект "вебстраница" по ее урлу? |
<iframe src="URL" width="0" height="0" id="mypage"></iframe> document.getElementById('mypage').contentWindow |
Цитата:
|
для скрытой подгрузки данных лучше всего подходит ajax, если же вы собрались тырить инфу с других сайтов, то лучше сразу забить на это дело, по крайней мере пока не разберётесь в том, что может js и что не может и в каких случаях.
|
спасибо.
А что это такое? document.getElementById('mypage').contentWindow - для чего? |
это ссылка на объект window подгружаемого фрейма
|
Понятно. Только все равно никак не могу добраться до элементов внутри айфрама. Как например получить список всех тагов или один какой нибудь?
|
layla,
http://javascript.ru/doctree |
Цитата:
если со своего, то также как и без фрейма, только заместо window упомянутая выше конструкция |
Цитата:
А как такое может быть? если что то есть в айфраме то значит оно уже у нас в компьютере во временной папке. Значит можно делать с ним что хочешь. Или как? И еще document.getElementById('mypage').contentWindow - это ссылка на объект window подгружаемого фрейма. А как ссылку превратить в объект? |
Может вообще не действовать через айреймы а как то иначе?
Можно как-то перекачать содержимое удаленного урла в переменную стринг? |
Цитата:
Цитата:
JavaScript работает под управлением браузера и может делать только то, что ему разрешит браузер а браузер не разрешает общатся полноценно и просто с чужими доменами так как иначе это бы позволило любому сайту снять с вашего кошелька все деньги, если вы случайно забыли разлогинится Цитата:
http://javascript.ru/ajax/cross-domain-scripting но это только со своих доменов, по сути с чужих не удастся, кроме проксирования.но это опять-таки не всегда подходит |
тут http://anton.shevchuk.name/javascrip...eginners-ajax/ что то о джквери написано. Похоже на то что надо. Но никак не могу разобраться чего это такого. И спать пора. Может кто т о из опытных поймет быстрее?
|
layla,
ns negjq& тебе русским языком говорят, что javascript не может так просто общаться с другими доменами на способы это хоть как-то обойти(при условии, что оба домена твои, либо ты готов юзать серверные скрипты как прокси), я уже кинул ссылку выше jQuery ограничения наложенные на JS обойти разумеется не может из кросдоменного взаимодействия у него кажется только getScript реализован Сперва прости пожалуйста материалы размещенные по ссылкам, что тебе указали затем сделай поиск по форуму, по поводу кросдоменных запросов, если тебе не хватит информации после этого, перечитав еще три раза эти статьи, задавай адекватный вопрос, а не пиши идиотские вопросы об одном и том же, как ты это до сих пор делаешь |
layla,
а хотите я вам повторю еще раз? ;) Цитата:
|
Впрочем, html application Эксплорера и виджетам Оперы позволено делать XHR на чужие домены.
Но скажу сразу, чтобы не плодить пустых вопросов, заставить браузер пользователя запустить их, без явного на то согласия и желания самого пользователя, невозможно. Но если у Вас, layla, благие намерения, я верю, Вы сможете почитать документацию и сделать что-то полезное. |
Подниму тему, вопрос похожий. И по уровню подготовки вопрошанта тоже. В смысле в программировании понимаю, но в яве - ничего.
Условия таковы. GreaseMonkey. Под ним мой скрипт модифицирует получаемые коды хтмл заменяя ссылки на страницы с картинками - ссылками на картинки непосредственно. Обычное дело. Но, на одном сайте два уровня: обычные картинки и большие картинки. При этом не каждая картинка имеется в большом варианте. Узнать есть ли у нее таковой нельзя из уровня страницы с ноготками (thumbnails). Можно только открыв страницу с картинкой - там появляется ссылка на большой (оригинальный) вариант. Который, тоже откроется на странице, а не живьем. Но, это уже не та проблема о которой я пишу. Если бы я мог скачать текст кодов по известному адресу (все на одном домене ессно) и посмотреть есть ли там ссылка на большую картинку, я бы мог сразу на странице ноготоков заменять ссылки соответственно наличию/отсутствию больших картинок. Если я правильно понял (и у меня похожая заготовка есть), то надо создать iFrame в текущей странице, скрытый, поставить его src на адрес страницы. Это в общем понятно. Не понятно: 1). можно ли загружать только текст. Поскольку если все грузить - тамошняя картинка весит немало и фактически получится прелоадер. Чего вовсе не надо. 2). Как определить событие окончания загрузки или можно не дожидаясь долбить туда запросы на получение ссылки для определенного элемента? |
kostyanet
Вот тут то именно AJAX и нужен. И пугаться страшного слова не надо, всё элементарно.) |
Я пугаюсь? Ни разу не видел.
Вопрос. Кто мне даст ейджекс на сервере какого-нить aceshowbiz.com? |
Собсно скрипт в GreaseMonkey(а речь шла именно о нём, или я что-то не понял?) формально выполняется на этом же домене, так что доступ есть и аяксом вы соответственно получите код страницы.
Элементарно берём пример отсюда-же из уроков, меняя только ссылку и запихивая его в GreaseMonkey для всего javascript.ru: function getXmlHttp(){ var xmlhttp; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; } function vote() { // (1) создать объект для запроса к серверу var req = getXmlHttp() // (2) req.onreadystatechange = function() { // onreadystatechange активируется при получении ответа сервера if (req.readyState == 4) { // если запрос закончил выполняться //alert(req.statusText) // показать статус (Not Found, ОК..) if(req.status == 200) { // если статус 200 (ОК) - выдать ответ пользователю alert("Ответ сервера: "+req.responseText); } // тут можно добавить else с обработкой ошибок запроса } } // (3) задать адрес подключения req.open('GET', '/forum/75627-post22.html', true); //для примера линк на ваш пост // объект запроса подготовлен: указан адрес и создана функция onreadystatechange // для обработки ответа сервера // (4) req.send(null); // отослать запрос } vote() Вам остаётся лишь отпарсить полученный результат на предмет нужных элементов. А вот с обработкой по мере загрузки скорее всего получится облом. |
Ясно. Когда я ничерта не смог понять из статьи о функции replace и потащился на в3скул, то не сразу сообразил что и прочитанная статья об аджаксе такого же художественного качества.
Сколько раз уже зарекался что-то читать по технике на русском - забываю и читаю и гарантировано напарываюсь на галиматью. Если знаешь, то, конечно, сразу разберешься, а если не знаешь - сначала воспринимаешь как факт. Ну, типа, люди же не дурнее тебя. Оказывается дурнее. Никому в голову не пришло написать что аджакс - клиентская группа технологий. http://en.wikipedia.org/wiki/Ajax_%28programming%29 Ладно, проехали. Сам разберусь. ЗЫ Особенно порадовала несанкционированная подписка на темы. Мило. |
Часовой пояс GMT +3, время: 04:54. |