У меня странная ситуация в IE, когда JS не может вызвать флэш-память с помощью ExternalInterface после нажатия кнопки «обновить».Я знаю, что фильм загружается, и код, который выполняет ExternalInterface.addCallback()
, кажется, завершается без каких-либо ошибок
Вот краткое изложение шагов для воспроизведения:
- Откройте IE изагрузите фильм в первый раз, методы обратного вызова ExternalInterface доступны для JavaScript.
- Если я нажму кнопку обновить, методы обратного вызова недоступны, и я получаю ошибку
Object doesn't support this property or method
. - Если я очищу кэш и обновлю страницу, они снова будут доступны.
- Если я снова нажму «Обновить», не очистив кэш, они будут недоступны.
- Если я закрою браузер и снова открою, они снова будут доступны.
Я уже сталкивался с такой ситуацией и уверен, что для загрузки требуется дополнительная задержкаи создание экземпляра swf - это то, что позволяет ExternalInterface быть правильно настроенным.Способ, которым я раньше работал, заключался в добавлении случайного числа в конец URL-адреса swf, чтобы оно никогда не использовалось из кэша, но это не является реальным решением.
Кто-нибудь знает, как решить эту проблему?
edit:
Я должен был также упомянуть, что после обновления, ExternalInterface.available'true', но 'ExternalInterface.objectId' равен 'null'.
Я попытался рандомизировать значение объекта id
и встраивать name
и идентификатор контейнера div и в каждом случае, ExternalInterface.objectId
остается null
.
Дополнительная информация:
Я не понимаю, как изменится способ вставки фильма, но я подумал, чтобудет включать в себя код просто чтобы быть уверенным.На мой фильм не влияет проблема «нажмите для активации», и я не хочу использовать SWFObject в этом случае, поскольку флэш-фильм является запасным вариантом в случае, если звук HTML5 недоступен.
var docContainer = document.createElement('div');
docContainer.innerHTML = '<object '
+ 'classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" '
+ 'codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0" '
+ 'id="mp3player" '
+ 'width="300" '
+ 'height="500">'
+ '<param name="allowScriptAccess" value="always" />'
+ '<param name="movie" value="mp3player.swf" />'
+ '<param name="quality" value="high" />'
+ '<param name="bgcolor" value="#ffffff" />'
+ '<embed '
+'src="mp3player.swf" '
+ 'quality="high" '
+ 'bgcolor="#ffffff" '
+ 'width="300" '
+ 'height="500" '
+ 'swLiveConnect="true" '
+ 'name="mp3player" '
+ 'id="mp3player" '
+ 'allowScriptAccess="always" '
+ 'type="application/x-shockwave-flash" '
+ 'pluginspage="http://www.adobe.com/go/getflashplayer" />'
+ '</object>';
document.body.appendChild(docContainer);