Если ваша флеш-память в Firefox работает нормально, мы можем с уверенностью предположить, что что-то не так с HTML-оболочкой или кодом JavaScript, который пытается вызвать функцию.Размещение этих фрагментов значительно помогло бы.
Но, вообще говоря, IE будет использовать тег <object>
, а все остальные будут использовать тег <embed>
.Я думаю, что лучшая идея - использовать jQuery для встраивания и вызова флэш-памяти, вот простой HTML-код, который я использую для IE, Firefox и Chrome:
<object id="GAMENAME" classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000'
codebase='http://download.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=10,0,0,0'>
<param name="allowScriptAccess" value="always">
<param name="movie" value="game.swf">
<embed id="GAMENAME" name="GAMENAME" src="game.swf" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"
allowScriptAccess="always">
</embed>
</object>
У меня есть служебная функция для доступафлэш-объект:
function getGame()
{
if (window.document[gameName])
{
return window.document[gameName];
}
if (navigator.appName.indexOf('Microsoft Internet') == -1)
{
if (document.embeds && document.embeds[gameName])
{
return document.embeds[gameName];
}
else
{
return document.getElementById(gameName);
}
}
}
Да, для глобальной переменной gameName
должно быть задано имя, присвоенное флэш-объекту.В нашем случае это должно быть "GAMENAME"
, чтобы соответствовать HTML выше.Я уже говорил, что это не то, что я считаю производственным кодом?
Тогда при вызове Flash-объекта я использую что-то вроде:
getGame().test()
JavaScript здесь может быть не совсем разумным или иным образомпредставляют лучшие практики, но они указывают на проблему, с которой сталкиваются при поиске встроенного flash-объекта при наличии <object>
против <embed>
и нескольких браузеров.