загрузка страницы посредствам Js, реально ли?

W
На сайте с 10.05.2009
Offline
114
2460

Скажу сразу, я не такой спец по js, поэтому и спрашиваю у Вас.

Есть вопрос, реально ли подгрузить в переменную js внешней страницы посредствам самого js не прибегая к php.

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

<script src='http://site.com'></script>

Но вот как то что подгрузилось закинуть в переменную, ума не приложу...

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

var txt =eval ('<scr' + 'ipt src="http://site.com"></scr' + 'ipt>')

Второй вариант был заключить эту конструкцию в div, и после загрузки документа взять содежимое контейнера,

<div id="cod"><script src="http://site.com"></script></div>

<script type="text/javascript">
function getvalue()
{
var txt = document.getElementById('cod').innerHTML;
}
</script>

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

<script src='http://site.com'></script>

Вобщем нужен ваш совет, это вобще реально сделать, если нет, то можно обсновать почему? Если реально, то хотябы пару намеков куда копать...

TA
На сайте с 12.06.2009
Offline
116
TiA
#1

Копаем в сторону работы с протоколом HTTP, объекта XMLHttpRequest и так далее. Это все активно используется в AJAX. Также не забываем о политике общего происхождения

Профессиональная верстка и разработка сайтов на WordPress (http://www.maultalk.com/topic139110s0.html)
W
На сайте с 10.05.2009
Offline
114
#2

насколько я знаю браузеры по умолчанию не дадут подгрузить страницу с другого сайта, или это както можно обойти?

TA
На сайте с 12.06.2009
Offline
116
TiA
#3
wolfston:
насколько я знаю браузеры по умолчанию не дадут подгрузить страницу с другого сайта, или это както можно обойти?

Это называется

TiA:
политика общего происхождения

Частично обойти можно с помощью свойства domain

T.R.O.N
На сайте с 18.05.2004
Offline
314
#4
wolfston:
<div id="cod"><script src="http://site.com"></script></div>
<script type="text/javascript">
function getvalue()
{
var txt = document.getElementById('cod').innerHTML;
}
</script>

Если отмести то, что это способ через ж..., то нужно понимать не JS а DOM.

<iframe id="cod" src="/...."></iframe>

А дальше как у Вас, но... ничего не получится (в нынешних условиях), если Вы будите пытаться загрузить страницу не со своего сайта

T.R.O.N добавил 15.02.2010 в 15:52

TiA:
Частично обойти можно с помощью свойства domain

Можно, но работает не везде...

От воздержания пока никто не умер. Хотя никто и не родился! Prototype.js был написан теми, кто не знает JavaScript, для тех, кто не знает JavaScript (Richard Cornford)
W
На сайте с 10.05.2009
Offline
114
#5

немного порывшись по инету нашел одну интересную статью по теме, вот кусочек от туда -

Для того чтобы Web-страница извлекала содержимое из сторонних источников, нужно обмануть политику Same Origin Policy. Обычно используемым исключением, не ограниченным политикой Same Origin Policy, является тег <script>, посредством которого элемент <script> добавляется в дерево объектов DOM страницы, заставляя ее загружать и выполнять код, находящийся в URL, указываемом атрибутом src этого элемента.

У меня возник вопрос, если подгрузить страницу через <script src='http://site.com'></script>, она войдем в модель DOM? можно будет обратится к ней через document.getElementById и т.д., или это тоже тупик? НТМЛ код страницы в браузере не отображается.

wolfston добавил 15.02.2010 в 16:27

только что пробывал, не получилось, с ифреймом анологично...

TA
На сайте с 12.06.2009
Offline
116
TiA
#6
wolfston:
У меня возник вопрос, если подгрузить страницу через <script src='http://site.com'></script>, она войдем в модель DOM? можно будет обратится к ней через document.getElementById и т.д., или это тоже тупик? НТМЛ код страницы в браузере не отображается.

Еще раз. Загрузка страницы происходит по протоколу HTTP. Чтобы загрузить страницу нужно сформировать HTTP запрос. Это делается через функцию-конструктор XMLHttpRequest.

W
На сайте с 10.05.2009
Offline
114
#7

TiA Спасибо, я понял вас, но только не понял как обойти политику безопасности, допустим подключаем jquery и выполняем такой скрипт -

<script src='http://code.jquery.com/jquery-1.4.1.min.js' type='text/javascript'></script>

<script type="text/javascript">

$.get("http://www.li.ru/", function(data){

alert("Data Loaded: " + data);

});

</script>

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

Чувствую что тут тупик, и без прокладки в виде php странички с курлом не как не обойтись, а не хотелось излишне нагружать сервер...

Bitman
На сайте с 05.07.2009
Offline
112
#8
Северный лес (https://euro-vagonka.by) DREW (https://drew.by) AvtoDrive (https://avtodrive.by)

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий