IE не будет приостанавливать файл Flash SWF при переключении вкладок

У меня есть простая HTML-страница, содержащая две вкладки, которые отображают/скрывают контент в одном и том же пространстве.

Первая вкладка содержит SWF-файл, встроенный с помощью SWFObject.js.

При переключении между вкладками я хотел бы, чтобы SWF-файл приостанавливался или останавливался. Это прекрасно работает во всех браузерах, кроме IE7+, что является известной проблемой.

Какие могут быть возможные решения?

Простым решением было бы удалить SWF-файл из DOM и повторно вставлять его каждый раз, когда выбирается и загружается первая вкладка.

Лучшим решением было бы приостановить/остановить файл SWF с помощью Javascript или jQuery. Как я могу это сделать?

SWF-файл создается с помощью Adobe Captivate 5. Нужно ли предоставлять метод паузы/остановки с помощью API ExternalInterface, который может вызывать Javascript/jQuery? Или есть стандартный метод паузы/остановки, доступный для всех SWF-файлов, который я могу просто вызвать?


person Max Power    schedule 30.05.2011    source источник


Ответы (2)


Легкий:

document.getElementById("movieName").StopPlay();

тогда

document.getElementById("movieName").Play();

Примечание. Никогда не использовал SWFObject.js и ничего об этом не знаю, но это должно работать для всех обычных методов встраивания, см. это post, чтобы узнать, как я обычно встраиваю swf-файлы.

person Jonathon    schedule 30.05.2011
comment
Я пробовал это, но оба метода возвращают неопределенное значение и не влияют на файл SWF. - person Max Power; 31.05.2011
comment
Ну, мне интересно, то, как вы его встраиваете, несовместимо с IE, потому что я почти уверен, что этот метод должен быть. - person Jonathon; 31.05.2011
comment
См. Ссылку в моем ответе на пример того, как встроить swf в веб-страницу, чтобы IE понравился. - person Jonathon; 31.05.2011
comment
<object type="application/x-shockwave-flash" data="FlashFile.swf" width="100%" height="100%" id="swf_video" style="visibility: visible; "><param name="allowScriptAccess" value="never"><param name="wmode" value="transparent"><param name="allowFullScreen" value="true"></object> Это то, что выдает SWFObject.js для встраивания моего SWF-файла. - person Max Power; 31.05.2011
comment
Да, если я правильно помню, это способ FF, IE использует <embed> что-то вроде этого. - person Jonathon; 31.05.2011
comment
И затем я думаю, что для некоторых браузеров вам нужно получить доступ к <object>, а для других вам нужен <embed>, сделайте тест и посмотрите, какой из них, но это то, что я использовал: if(window.document[movieName]){return (window.document[movieName]);}if (document.embeds && document.embeds[movieName]) { return (document.embeds[movieName]); } return (document.getElementById(movieName)); - person Jonathon; 31.05.2011
comment
Попробуйте: <object type="application/x-shockwave-flash" data="FlashFile.swf" width="100%" height="100%" id="swf_video" style="visibility: visible; "><param name="allowScriptAccess" value="never"><param name="wmode" value="transparent"><param name="allowFullScreen" value="true"><embed play="false" loop="false" menu="false" swliveconnect="true" name="swf_video" src="FlashFile.swf" quality="high" bgcolor=#FFFFFF type="application/x-shockwave-flash" width="100%" height="100%"></embed></object> - person Jonathon; 31.05.2011
comment
Неа. До сих пор нет результатов. Файл продолжает воспроизводиться без изменений. - person Max Power; 31.05.2011
comment
Ну я еще кое-что заметил. Вы, вероятно, что, чтобы удалить <param name="allowScriptAccess" value="never"> или изменить его на true или что-то в этом роде. Похоже, это не позволит вам управлять swf через JS, поэтому его отключение может решить все ваши проблемы. - person Jonathon; 31.05.2011
comment
Спасибо за вашу помощь. В итоге я просто удалил объект Flash из DOM при выгрузке вкладки и повторно вставил его при загрузке вкладки. - person Max Power; 31.05.2011

Попробуйте утилиту CaptivateController; он был разработан специально для управления Captivate SWF через JavaScript.

person pipwerks    schedule 31.05.2011
comment
Я только что перечитал ваш пост и понял, что вы просите приостановить затем скрыть SWF, а затем иметь возможность возобновить с того места, где вы остановились, после того, как SWF снова станет видимым. К сожалению, браузеры по-разному обрабатывают SWF-файлы, которые были скрыты от просмотра. Некоторые браузеры всегда возобновляют работу с самого начала, когда SWF снова становится видимым. Единственным обходным путем может быть создание сценария функции закладок и принудительное использование закладки SWF после перезагрузки SWF. Грязный обходной путь, если не сказать больше. - person pipwerks; 31.05.2011
comment
Я не обязательно хотел приостановить видео. Было бы достаточно просто остановить вспышку при переключении вкладок. Это было сделано для устранения ошибки IE, из-за которой, если во Flash есть звук и вы переключаете вкладки на той же странице, вы продолжаете слышать звук, поскольку Flash все еще воспроизводится под скрытым div. - person Max Power; 01.06.2011