Как я могу вызвать предупреждение jQuery, когда iframe И его CSS загружаются и отображаются? - PullRequest
2 голосов
/ 02 декабря 2010

Я пытаюсь вызвать предупреждение, когда <iframe> и его CSS-файлы загружаются и обрабатываются.

Пока у меня есть следующее:

$("#content_ifr").ready(function (){
        alert('iframe ready');
});

Проблема в том, что оповещение происходит до того, как CSS отображается на странице, после закрытия оповещения вы видите, как CSS вступает в силу в браузере.

Любые идеи о том, как решить эту проблему с OUT небрежного взлома тайм-аута?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 02 декабря 2010

Поскольку вы работаете с tinyMCE, пробовали ли вы их API?

http://wiki.moxiecode.com/index.php/TinyMCE:API/tinymce.Editor

Я думаю, что onLoadContent - это ваша лучшая ставка, но я не уверен, что это делает магию CSS.

Единственный способ приостановить загрузку до загрузки CSS - это неаккуратный тайм-аут. в основном:

  1. установить действительно конкретное правило, например div.test-file -loaded {color: # 123456 }
  2. создать div этого класса.
  3. проверьте, если цвет этого элемента # 123456, продолжайте тайм-аут и повторяйте, пока он не станет.

Очень хотел бы знать, есть ли способ без взлома, но я не думаю, что он есть. Поскольку вы имеете дело с iframe, потребуется еще больше хакерства ...

2 голосов
/ 02 декабря 2010

Вы хотите использовать .load(), а не .ready().

удалено возможное решение, поскольку использовалось нестандартное свойство iframe

Вот где я его нашел: Пост Stackoverflow

Редактировать: удален последний возможный пример. Сделал быстрый поиск и .load должен работать на фреймах. Можете ли вы открыть образец страницы с указанием проблемы?

Редактировать: Другой способ привязать нагрузку - сделать это:

$(frameSelector).bind("load", "function call here");
0 голосов
/ 09 июня 2012

Этот подход проверен и работает для указанного списка браузеров:

См. Рабочий раствор !

jQuery

setup : function(ed) {
  ed.onLoadContent.add(function(ed, o) {
    var controlLoad = setTimeout(function() {
      if ($('.mceIframeContainer').size()==1) {
        alert('done');
        clearTimeout(controlLoad);
      }
    }, 100);
  });
}

То, что он делает, это запускает тайм-аут до тех пор, пока не будет найден класс .mceIframeContainer, что означает, что загрузка завершена.После его нахождения устанавливается фокус для первого элемента ввода, и время ожидания сбрасывается.


ИСПЫТАНО НА

Windows XP Profissional версия 2002 с пакетом обновления 3

  • Internet Explorer 8.0.6001.18702
  • Opera 11.62
  • Firefox 3.6.16
  • Safari 5.1.2
  • Google Chrome 18.01025,168 м

Windows 7 Home Edition с пакетом обновления 1

  • Internet Explorer 9.0.8112.164211C
  • Opera 11,62
  • Firefox 12.0
  • Safari 5.1.4
  • Google Chrome 18.0.1025.168 m

Linux Ubuntu 12.04

  • Firefox 12.0
  • Chromium 18.0.1025.151 (Developer Build 130497 Linux)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...