Динамично созданный iframe, не работающий над Safari

У меня есть странная проблема, и я не нахожу ответа на Google... Я динамично создаю и выполняю iframe с jQuery на странице. Это хорошо работает withFF и IE, но не с Safari.

iframe создается, но пуст (сообщение "поздравления от iframe!" отсутствует). Вот часть кода для иллюстрирования его:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr-fr" lang="fr-fr" >
 <head>
  <title>iframe</title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
  <script type="text/javascript">
   $(document).ready(function() {

    var jFrame = $('<iframe id="myiframe" name="myiframe">');
    jFrame.css({'height':'40px','width':'200px'}).appendTo($('#container'));

    $('#myiframe').load(function() {
     jFrame.contents().find("body").html('greetings from the iframe !');
    });

   });
  </script>
 </head>
 <body>
  <div id="container"></div>
 </body>
</html>

Я действительно задаюсь вопросом, почему iframe остается пустым с Safari. Походит, если "содержание ()" не хорошо интерпретировался...

Какая-либо идея?

1
задан skaffman 12 June 2010 в 18:51
поделиться

1 ответ

Убедитесь, что прикрепили обработчик события load до того, как оно может сработать, например, так:

$('<iframe id="myiframe" name="myiframe" />')
  .css({'height':'40px','width':'200px'})
  .load(function() {
     $(this).contents().find("body").html('greetings from the iframe !');
  })
  .appendTo('#container');

Учитывая это, я не уверен, что событие load обязательно срабатывать, если фактической загрузки не было (у вашего фрейма нет src), все браузеры могут следовать спецификации здесь, но все же быть непоследовательными. Но... Safari всегда был немного "не в себе" с событиями load и ready, поэтому использование приведенного выше подхода поможет решить эту проблему, насколько это возможно. И последнее замечание, .appendTo() может принимать селектор напрямую ;)

2
ответ дан 2 September 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: