Javascript-форум (https://javascript.ru/forum/)
-   Элементы интерфейса (https://javascript.ru/forum/dom-window/)
-   -   Iframe, извлечение информации из произвольной части сайта (https://javascript.ru/forum/dom-window/12441-iframe-izvlechenie-informacii-iz-proizvolnojj-chasti-sajjta.html)

Stephanos 17.10.2010 21:54

Iframe, извлечение информации из произвольной части сайта
 
Собсна...я нуб. Мне запретили дядьки из администрации писать в названии темы "Я нуб, нужен совет" вот...пишу тут.
Собсна. Прошу помогите.

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


Надеюсь, моё "художество" вам поможет) На самом деле я рисую намного лучше, сам понять не могу...почему такое убожество получилось)

Мне ответили:
"
Насчёт "места, куда должна вставляться информация с др. сайта", есть тег <IFRAME>
Насчёт "места, информация из которого должна переноситься", это может быть реализовано с помощью php или javaScript-a. Т.е. страницу, на, которой находится нужный блок информации, нужно обработать, найти на ней нужный фрагмент, блок информации и затем вывести его в качестве элемента вашей страницы. "

Но я же нуб)
Помогите, мне, пожалуйста. Дайте код с подробным описанием...ПОЖААААЛУЙСТА.:h elp:

sp00n 19.10.2010 00:05

на данном форуме я конечно новичок, и наверное мой пост будут критиковать, но я все же рискну.

во-первых попробуй поменьше употреблять "паразитов" (собсна, собственно) просто не приятно читать, хотя и не кретично, но встречают по одежке.

во-вторых (и главное) форумы такого рода, существуют для того, что бы помогать людям, а не делать за них работу (для этого тут есть другая ветка)

в-третих, ИМХО такие задачи лучше решать на стороне сервера, зачем грузить клиента, кроме того, javascript должен помогать пользователю, и при возможности страница должна работать и без него, а если ты скриптом будешь вытаскивать данные с другого сайта, то твоя страница без JS работать не будет, что есть плохо.

adovgun 20.01.2011 04:06

Уважаемый sp00n многие из нас на разных форумах новички по разным причинам, кто то никогда на них не регистрировался, кто то и в правду новичок... Но суть не в этом, человек четко расписал с какой задачей он столкнулся, и незачем здесь расписывать во первое, во второе... и так далее если вы по существу не ответили на вопрос.

Ситуация довольно проста (как описывал коллега по задаче):
Нужно считать определенную часть сайта и показать ее в определенной части другого сайта к которому мы имеем доступ и можем изменить НТМЛ (собственно код). Собственно все мы умеем использовать ифрейм но вот как заставить этот ифрейм вывести например блок информации :

margin-left: 300px; - вот как сделать такой отступ !??
margint-top: 150px;

width:400px; - это мы легко делаем в параметрах Ифрейма
height:200px;

И нефег здесь спамить не по теме и давать ссылки на глаыную ветку форума или расказывать что мол если без ДЖАВА то плохо, вы знаете на данный момент хоть один браузер что не поддерживает ДЖАВА, и какой процент посетителей вашего сайта отключает ДДЖАВУ ?:??

VelMizar 02.04.2012 12:07

Тут есть небольшое решение:
Ну честно говоря не могу в этом розчехлится:

<div id="newbox" style="width:400px; height:200px; overflow:scroll; border:1px solid red;">Переносимо сюда</div>
<div id="framebox">Завантажений код</div>
<script type='text/javascript'>
var framebox, id="wrapper", frame, framedoc, obj, newbox,
timerID=null, interval=1000, i=0, maxi=9, page="http://telepuzik.ru",
h="<h3>Фрагмент элемента со страницы "+page+"</h3>";

function getIframeDocument(iframeNode)
    {
	    if (iframeNode.contentDocument) return iframeNode.contentDocument
	    if (iframeNode.contentWindow) return iframeNode.contentWindow.document
	    return iframeNode.document
    }



function create_frame(str) 
 {
  framebox=document.getElementById("framebox");
  framebox.innerHTML="<iframe name='t' id='t' src='"+str+"'></iframe>";
  newbox=document.getElementById("newbox");
 }


function get_frame_doc() 
{
 if (obj || i>maxi){
  clearInterval(timerID);
  get_text();
  return;
         }
 frame=document.getElementById("t");
 framedoc=(frame.contentWindow && frame.contentWindow.document) || frame.contentDocument || frame.document;
 obj=framedoc && frame.getElementsByTagName('table')[1];
 i++;
}


function get_text() {	
 if (obj && obj.hasChildNodes() && obj.childNodes[1] && obj.item(1)) {
  newbox.innerHTML = h + (obj.childNodes[1] && obj.childNodes[1].innerHTML);
  framebox.innerHTML="#####";
    }
 else return alert("Не удалось получить Объект за "+(i-1)*interval+" мс!");
}


create_frame(page);
timerID=setInterval(get_frame_doc, interval);
setTimeout(function() {
					var ifram_1=document.getElementById("framebox").getElementsByTagName("iframe")[0];
					var q=getIframeDocument(ifram_1);
					alert("innerHTML kod ### ="+q.innerHTML);
					} , 5000); 

</script>


Почему тут alert("innerHTML kod ### ="+q.innerHTML) - не показывает код загруженной странички в iframe? Помогите!

VelMizar 04.04.2012 19:52

А правда, что просто нету доступа... - связанно с проблемой безопасности. Можно только в пределах одного домена!?

melky 04.04.2012 21:23

да, но в интернете, на сайте Yahoo, есть такая возможность, взаимодействовать не со своими сайтами посредством API Yahoo.

Вот один из примеров взаимодействия с YQL:

тырим код страницы ucoz.ru :
HELLO WORLD !!!!!!
...


<script>
function clb(data){ 
     document.body.innerHTML += data.results[0].replace(/\/{2}(?:\]\]>)|(?:<!\[CDATA\[)/g, '');
}
</script>

<script src="http://query.yahooapis.com/v1/public/yql?q=%20SELECT%20*%20FROM%20html%20WHERE%20url%3D%22http%3A%2F%2Fucoz.ru%2F%22%20%20&format=xml&callback=clb"></script>


попрактикуйтесь в консоли

VelMizar 05.04.2012 21:39

:dance:
Спасибо... Интересно... Я , что такое есть, и не знал... Грузится правда долго...
:yes:

VelMizar 05.04.2012 21:47

:)
Но было б лучше чтоб javascript работал... Ибо интересует больше не сам код как таковой, а код, что загрузится именно в мой скрытый iframe. там есть маленькая разница..
:agree:

w46823 14.04.2012 02:00

Может просто попробуйте <?php include...?> ?

Le-mark43 15.04.2012 19:16

вот интересно, а параметры вставляемого из другого сайта объекта заранее известны? ну там id Diva например...
фиг знает, но как вариант:
Цитата:

Сообщение от w46823 (Сообщение 168946)
<?php include...?>[/b] ?

с абсолютным адресом страницы. (наверное не кроссдоменно).
инклудить соответственно в <div style='visibility:hidden'> и в нём уже искать див, который надо клонировать.

либо, через невидимый iframe:
var temp = top.nameFrame.document.getElementById('нужны div').innerHTML; //забираем
document.getElementById('div куда вставляем').innerHTML = temp;//вставляем


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