2015-02-18 2 views
2

У меня есть несколько фреймов, указывающих на внешние сайты на моей странице. Если эти службы прерваны или изменены, я хотел бы скрыть эти iframes вместо отображения сообщения об ошибке на моей странице. Есть ли способ узнать в Javascript, если iframe загружен правильно? я добавил класс, чтобы скрыть IFRAME, а затем удалить его с JQuery, когда IFrame готов, как это:Скрыть iframe, если не правильно загружена

$('#widget').ready(function() { 
    $('#widget').removeClass('hidden'); 
}); 

Он по-прежнему удаляет скрытый класс, когда я поставил неверный URL в IFrame ЦСИ, показывая ошибка iframe. Мои вопросы: два:

  • Как я могу заставить функцию запускаться, если iframe загружен правильно?
  • Вместо того, чтобы использовать $ ('# widget'). Ready, я хотел бы использовать $ ('iframe'), готовый сразу нацелить все фреймы; если я это сделаю, как обратиться к определенному iframe, загруженному внутри функции?

Спасибо!

+0

вам нужно будет проверить url iframe src. Вы не можете сделать это с помощью JS. Вы используете PHP для своего бэкэнда? – CodeGodie

+0

Да, PHP и ZF2. – Aise

ответ

3

Ваш вопрос может быть сводились к:

, как я могу проверить, если URL существует и веб-сайт жив из JavaScript?

Ответ расщепляется в:

  • Для внутренних адресов, использовать AJAX и проверить код ответа: если это 2xx или 3xx (например, 200 или 302), это нормально. Если это 4xx или 5xx (например, 404 или 500), это плохо. Подробнее о a similar answer.

  • Для внешних ссылок , вы не можете сделать это из-за меры безопасности под названием same-origin policy.

Поскольку вы, кажется, указывают на внешние URL-адреса, вот мое предложение:

Создать серверный компонент (сервлета, а RESTful WebService, действие Struts2, и т.д ... все, что вы предпочитайте, в соответствии с используемой вами технологией сервера), которые выполняют проверку для вас, и возвращают потоковый ответ с данными (если есть) и кодом ответа HTTP, который вы можете проверить на наличие ошибок. Затем с s вызовите URL-адрес компонента.

+0

Похоже, это непростая задача, так как я стараюсь ... Я использую PHP и Zend Framework 2, как я могу проверить, существует ли там URL? – Aise

+0

Я не использую их, поэтому я понятия не имею. Вы должны задать отдельный вопрос, спрашивая о том, «как связаться и загрузить сервер сайта из PHP/ZendFramework 2», после того, как он выполнил поиск, если уже задан такой вопрос и ответ. –

+0

Хорошо, я попробую, спасибо! – Aise

1

Возможно, вы не можете делать то, что хотите, используя Javascript, вам понадобятся серверные вещи, например PHP.



Однако, вот некоторые полезные места для поиска дополнительной информации:


Вы можете запустить код еще через IFrame нагрузок с помощью этой функции JQuery:

$('#myIframe').load(function(){ 
    //your code (will be called once iframe is done loading) 
}); 

Посмотрите на this Stack Overflow question and answers о загрузке iframe.


Для целевого конкретного элемента внутри функции, сделайте следующее:

$('iframe').aFunction(function() { this.doSomething(); }); 

Посмотрите на this Stack Overflow question и ответы о "это".

+0

Я думаю, что 'load()' всегда будет иметь место, даже в случае получения 404 или 500, не так ли? –

+0

К сожалению, оба предложения, похоже, почему-то не работают. Если я использую загрузку вместо готовой, выглядит как функция когда-то запускается, а когда-то нет, не могу понять, в чем причина ... Использование $ ('iframe') и этого (или $ (this)) никогда не запускается. – Aise

Смежные вопросы