Jump to content
  • 0

Как загрузить удалённый HTML-файл в див?


RedRat
 Share

Question

Имеется некий сервер, на котором лежит периодически обновляемый статический HTML-файл. Надо загрузить его содержимое в div на другом сайте. С помощью IFrame это делать неудобно, так как заранее не известен объём файла, а IFrame требует явного указания ширины и высоты. Видимо, остаётся только вариант с JavaScrip-ом. Может, у кого-нибудь есть пример, как такое на нём можно сделать?

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

Имеется некий сервер, на котором лежит периодически обновляемый статический HTML-файл. Надо загрузить его содержимое в div на другом сайте. С помощью IFrame это делать неудобно, так как заранее не известен объём файла, а IFrame требует явного указания ширины и высоты. Видимо, остаётся только вариант с JavaScrip-ом. Может, у кого-нибудь есть пример, как такое на нём можно сделать?

Сделать все на стороне сервера и не мучаться

Link to comment
Share on other sites

  • 0

Сделать все на стороне сервера и не мучаться

На стороне КАКОГО сервера?! Я же объясняю, что HTML-файл лежит на одном сервере, а данные из него должны выводиться на страничке другого сервера (на котором даже PHP не запустить - есть возможность только добавлять/изменять HTML/CCS). Поэтому и вся надежда только на JavaScript. А он, к сожалению, умеет инклюдить только локальные файлы. Но задача-то типовая, наверняка её кто-то уже решал.

Link to comment
Share on other sites

  • 0

На стороне КАКОГО сервера?! Я же объясняю, что HTML-файл лежит на одном сервере, а данные из него должны выводиться на страничке другого сервера (на котором даже PHP не запустить - есть возможность только добавлять/изменять HTML/CCS). Поэтому и вся надежда только на JavaScript. А он, к сожалению, умеет инклюдить только локальные файлы. Но задача-то типовая, наверняка её кто-то уже решал.

Дано:

Сервер 1, на котором лежит файл c1.html

Сервер 2, на котором есть страничка c2.php

При запросе пользователем страницы c2.php, скрипт ломится на сервер 1, забирает отуда файл c1.html, встраивает его в результат работы c2.php и возвращает пользователю.

Итого, никаких скриптов JS, фреймов и прочего

Link to comment
Share on other sites

  • 0

Используй iframe и подгоняй его высоту под высоту его содержимого.

Увы, состав содержимого заранее неизвестен, так что подогнать под него не получится. :-(

Попробовал реализовать через XMLHttpRequest, данные нормально грузятся, но сам браузер выдаёт предупреждение, мол, идёт обращение к другому серверу, поэтому требуется разрешение пользователя. Что, опять же, неприемлимо.

В общем, пинцет. :-/

Link to comment
Share on other sites

  • 0

Ну так а яваскрипт начто? Можно же посчитать высоту.

var frame=document.getElementsByTagName('iframe')[0];
frame.style.height=frame.contentDocument.documentElement.outerWidth+'px';

Не проверял, но может сработать. Я не уверен, что у documentElement есть outerWidth

Note: Because of security reasons, the contents of a document can be accessed from another document only if the two documents are located in the same domain.
Понятно, я глупость сморозил. Ну тогда не знаю как ещё можно.
Link to comment
Share on other sites

  • 0

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

RedRat. Я понимаю, что вряд-ли смогу помочь, так как с данной ситуацией не сталкивался, но вот ссылку отыскал. Может она вам поможет. Уверен, вы наверняка уже читали, но всётаки.

Link to comment
Share on other sites

  • 0

В общем, пока решил проблему написанием на первом сервере PHP-скрипта, который отдаёт содержимое статики, обёрнутое в JavaScript. А уж JavaScript разрешается с любого домена грузить. Схема кривая, но вроде работает.

Link to comment
Share on other sites

  • 0

Недавно столкнулся с подобной задачей, решал через айфрейм, для коррекции высоты ширины использовал следующую конструкцию:

1.контент во фрейме после загрузки отправляет сообщение паренту об его высоте

window.parent.postMessage(height, '*')

2.парент принимает и делает поправки высоты фрейма

window.addEventListener('message', function(ev){

var height = ev.data;//сообщение, у нас высота кода во фрейме

....

}, false)

для ие девятого евент прописывал следующим кодом

window.attachEvent('message', ...)

правда это решение не работает для ие версий ниже 9тки но для меня это было нормально, кто не хочет обновляться пользуется скроллом :) Привел упрощенный вариант, в оригинале еще нужна проверка откуда идет вызов, ну и можно прописать адресата вместо * при отправке.

Кто заинтересовался пожалуйста ссылка

https://developer.mozilla.org/en/DOM/window.postMessage

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy