почему javascript document.write не работает в Firefox? - PullRequest
1 голос
/ 09 декабря 2010

У меня есть HTML-страница с изображением.он должен задержаться, переключиться на видео, а затем после воспроизведения видео вернуться к изображению.это javascript, который я использую:

<script type="text/javascript">
function playVideo(){
var str='**html of the video object**';
document.open();
document.write(str);
document.close();
}
function backToImage(){
var str='**html of the image**';
document.open();
document.write(str);
document.close();
}
setTimeout("playVideo()",1000);
setTimeout("backToImage()",3000);

</script>

этот javascript работает в Chrome и Safari.В основном это работает в IE (второй тайм-аут не работает, но я только что обнаружил это).Это не работает вообще в Firefox.Нет задержки, видео просто начинает воспроизводиться, и я никогда не вижу изображения;до или после.

любые мысли по этому поводу были бы замечательными.

edit: так что кажется, что виноват document.write.изменив заголовок, чтобы отразить это.

на случай, если мой исходный вопрос не был ясен, я ищу заменить изображение на видео, а затем заменить видео на изображение.все это загружается в iframe, поэтому мне нужно использовать document.write (или что-то в этом роде), чтобы на самом деле изменить HTML.

Ответы [ 2 ]

5 голосов
/ 09 декабря 2010

Использование document.write после загрузки страницы немного странно. Это действительно должно быть использовано только для генерации страницы при загрузке. Попробуйте что-то вроде этого:

<html>
  <head>
    <script type="text/javascript">

      function playVideo(){
        var str='**html of the video object**';
        document.getElementById('video-placeholder').innerHTML = str;
      }
      function backToImage(){
        var str='**html of the image**';
        document.getElementById('image-placeholder').innerHTML = str;
      }
      setTimeout(playVideo, 1000);
      setTimeout(backToImage, 3000);

    </script>
  </head>
  <body>
    <div id="video-placeholder"></div>
    <div id="image-placeholder"></div>
  </body>
</html>
4 голосов
/ 09 декабря 2010

Наиболее вероятной проблемой является то, что открытие / запись и закрытие документа полностью его очищают, а также текущие тайм-ауты, в том числе и в процессе.

Как указано в Объектная модель документа HTML

открыт
Откройте поток документов для записи. Если документ существует в target, этот метод очищает it.

Так Firefox реализовал чистую часть ( полная очистка )

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