Предположим, что я хочу встроить последний комикс одного из моих любимых webcomics в мой сайт как своего рода продвижение для него. webcomic имеет полосу в отделении с идентификатором, таким образом, я полагал, что могу просто встроить отделение в свой сайт, за исключением того, что я не мог найти примеры кода для того, как сделать это (они все показывают, как встроить флэш-память или целый веб-сайт). Кто-то может показать мне (или сказать), как это сделано?
PS я не использовал бы серверные сценарии или внешние сервисы (который является тем, что часто рекомендуется для встраивания RSS).
Вчера я просматривал блог Джеймса Падолси, где он опубликовал отличную статью о том, как выполнить междоменный запрос с jQuery, а также У Криса Хейлманна есть хорошая ДЕМО .
Принцип состоит в том, чтобы использовать YQL -> yahoo api для запросов веб-страниц, где вы получаете JSON со всем HTML. Удачного парсинга :)
А как насчет простого вызова AJAX , который перехватил бы комический элемент и обновил его содержимым ваш
в основном используется для этой цели?
Также вы будете использовать простой php для получения удаленной страницы, потому что вы не можете выполнить вызов ajax в другом домене
примечание: у пользователя должен быть включен JavaScript, также в следующем коде используется библиотека jQuery
на вашей странице, где вы хотите отображать удаленный комикс, создайте div только для этой цели , назовем его update-comic
{{ 1}}
запишите php , назовите его comic-scrape.php
, он загрузит html с удаленной страницы, вам следует подумать о кэширует ответ и обновляет его по указанному rval (например, 30мин, 1 час, ваш звонок .. :))
производительность сервера не должна снизиться после простой реализации проверки кеша
Php
$ url = 'http: //www.example.com / ';
$ response = file_get_contents ($ url);
echo $ response;
теперь идет магия jQuery , в которой вы делаете ajax вызовет ваш php scraper и возьмите только тот элемент, который вас интересует. Поместите этот скрипт на страницу просмотра (где у вас есть
Надеюсь, я охватил все.
Как предложил philfreo в комментарии, жизнеспособное решение также может включать выбор необходимого идентификатора на стороне сервера. Это очень просто с использованием PHP simplexml и небольшого xpath:
<?php
// set remote url and div id to be found
$elementId = 'remote-comic-id';
$url = 'http://www.example.com/';
// instantiate simple xml element and populate from $url
$xml = new SimpleXMLElement($url, null, true);
// find required div by id
$result = $xml->xpath("//div[id={$elementId}]");
// take first element from array, which is our desired div
$div = array_pop($result);
echo $div;
Можно просто использовать iframe
. Содержимое не буквально на этой странице, но выглядит так, как будто оно есть.
Вот пример: http://www.w3schools.com/TAGS/tryit.asp?filename=tryhtml_iframe
Похоже на то:
<iframe src ="http://www.example.com/index.html" width="100%" height="300"></iframe>
Добавьте ответный _ в блок
контроллера, чтобы соответствующий шаблон отображался в соответствии с требуемым форматом. Например:
def show
...
respond_to do |format|
format.html # renders show.html.erb
format.xml # renders show.xml.builder
end
end
-121--4028745- Если разделителями являются ':', можно разделить на ':', а затем использовать x.strip () в последовательностях, чтобы избавиться от любого начального или конечного пробела. int () игнорирует места.
-121--983434-< embed src = «url вашего комикса» ширина = «300» height = «250 »/>
Я решил ответить на свой вопрос, по крайней мере, пока кто-то не предоставит «лучшее» решение. Решением является мое второе обновление, где я «взламываю» положение элементов с перестановкой по javascript.
-121--4481973-Обновить 2: Хорошо, я отследил это до быть IE не нравится процентные размеры быть установленным на элементе выбора (хотя он получает это значение прекрасно первоначально, он ломается после вас каким-то образом манипулировать элементом). Выполнение следующих 2 строк jQuery решает проблему:
$ ('.dual-box > .list-box > select') .height ($ ('.dual-box') .height ()); $ ('.dual-box > .list-box > select') .width (($ ('.dual-box') .width ()/100) * 45);
Я надеялся, что это не стать взломом поверх взлома, но к сожалению, это кажется из. Делает любой человек имеет чистый способ разрешения Эта проблема?
Существует горячее исправление от Microsoft: Microsoft Connect . Я нашел эту ссылку на этом блоге .
Это исправление решило проблему после перезапуска для меня.
-121--2274731-Невозможно, так как нельзя управлять содержимым iframe/frame. Использование тэга iframe приведет только к изменению содержимого тэга, но не src. Ни с AJAX, потому что вы должны быть в одном домене.
Так, например, можно использовать PHP с ЗАВИТКОМ или довольно просто с fopen.