Междоменные запросы по id - PullRequest
       3

Междоменные запросы по id

0 голосов
/ 15 сентября 2011

Я пытаюсь отобразить коллаж изображений с других сайтов на моей веб-странице. Это работает нормально, если я знаю прямую ссылку, потому что я могу установить IMG SRC. Однако, если я знаю только имя страницы и идентификатор изображения на этой странице, можно сделать какой-нибудь вызов jQuery для получения src.

Как-то так, но звонил на другую страницу:

var imageSource = $("#pictureid").attr("src");

Ответы [ 4 ]

0 голосов
/ 15 сентября 2011

Попробуйте что-то вроде этого:

Сначала нам понадобится короткий серверный скрипт для отказов нашего запроса, поскольку AJAX препятствует той же политике происхождения. Вот что-то в PHP:

<?php if (isset($_GET['url'])) readfile($_GET['url']); ?>

Допустим, это сохраняется на get.php. Чтобы использовать его, мы просто устанавливаем поле url строки запроса с URL страницы, которую мы хотим получить. Сценарий получает весь HTML-код с этой страницы и выводит его. Например, get.php?url=http://stackoverflow.com/ получит весь HTML-код на индексной странице stackoverfllow.

Далее, давайте напишем несколько jQuery для получения src указанного изображения по URL. Как это:

var url = 'http://www.pics.com/';
var selector = '#pic8';

$.get('get.php', { url: url }, function(htmlResponse) {
    var pic = $(htmlResponse).find(selector);
    alert(pic.attr('src');
}, 'html');

Это должно сработать.

0 голосов
/ 15 сентября 2011

Нет, если вы хотите разместить изображение на своем сайте, вам нужно указать его URL.

0 голосов
/ 15 сентября 2011

То, что вам нужно, может включать вызов AJAX на этот другой сайт для извлечения HTML-кода, а затем просмотреть его, чтобы найти атрибут src интересующего вас тега img. Все современные браузеры имеют хотя существует какая-то политика единого происхождения, которая запрещает это - вы не можете делать AJAX-вызовы для чего-либо за пределами домена текущего документа (то есть скрипт, выполняющийся на странице на example.org, не может делать AJAX-вызовы на foobar.com).

Это означает, что вам придется прибегнуть к методам на стороне сервера: на выбранном вами языке на стороне сервера загрузите HTML-код с внешней страницы (большинство сред имеют привязки в libcurl, которая была разработана именно для этого) и затем проанализируйте это, чтобы найти изображение. Когда у вас есть URL, вы можете легко вставить его в свой динамический HTML.

Тем не менее, глубокие ссылки на изображения без разрешения нарушают сетевой этикет, и это может быть даже незаконно, в зависимости от юрисдикции, в которой вы находитесь (в конце концов, вы злоупотребляете чужим сервером, чтобы обеспечить пропускную способность для ваших посетителей, что-то, что может подпадать под определение незаконного взлома в некоторых юрисдикциях); хорошая вещь, которую нужно сделать, это вставить само изображение и разместить копию на своем собственном сервере, так что вы используете свою собственную пропускную способность для его обслуживания. И, конечно, соблюдайте авторские права и, если таковые имеются, условия лицензирования используемых вами изображений.

0 голосов
/ 15 сентября 2011

Клиентский JavaScript не предназначен для этого.То, что вы хотите сделать, это очистка экрана.Вы можете сделать это несколькими способами, самым простым из которых является YQL Yahoo и другие способы, используя Node.JS, PHP или предпочитаемый серверный язык.

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