Изменить источник изображения, если файл существует - PullRequest
17 голосов
/ 15 апреля 2011

У меня есть http://jsfiddle.net/rcebw/3/

Дело в том, что у меня будет множество таких inlinediv делений.Каждый из них имеет 2 элемента div, один из которых содержит изображение, а второй - ссылку.Они генерируются динамически из списка дочерних сайтов на другом сайте.

Я хочу, чтобы он проверял каждый div с классом inlinediv.Получите внутренний текст ссылки в div iconLinkText и найдите на сайте файл с таким именем.(http://www.mojopin.co.uk/images/ для этого теста.) Если он существует, замените на него изображение src.

Возможно, я выбрал абсолютно неправильный путь для этого, но, похоже, не могу заставить его работать,При тестировании он даже не может найти inlinediv div!Говорит, что это ноль.

Я довольно новичок в jQuery, но есть ли у кого-нибудь совет?(Я даже не знаю, хорошо ли я объяснил!)

Ответы [ 3 ]

37 голосов
/ 16 апреля 2011

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

function checkImage(src) {
  var img = new Image();
  img.onload = function() {
    // code to set the src on success
  };
  img.onerror = function() {
    // doesn't exist or error loading
  };

  img.src = src; // fires off loading of image
}

Вот рабочая реализация http://jsfiddle.net/jeeah/

1 голос
/ 15 апреля 2011

Политика Same Origin запрещает вам отправлять запросы AJAX в другие домены. Если вы не запускаете это на "http://www.mojopin.co.uk",, этот код не будет работать.

0 голосов
/ 15 апреля 2011

Вы не можете решить эту проблему только с помощью jQuery: Одинаковая политика происхождения не позволит вам отправлять запросы на третьи веб-сайты.

Самым простым решением является внедрение службы на вашем сервере, которая передает запросы на внешний веб-сайт.

В основном, если ваш сайт на

http://www.foo.bar

тогда вы создаете

http://www.foo.bar/scheckscript.php (например)

, который вы можете запросить с нужным вам URL

http://www.foo.bar/scheckscript.php?url=http%3A//www.third.com

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