Ответ 1
Мне удался этот маленький трюк:
$("embed").attr("wmode", "opaque").wrap('<div>');
Он эффективно перерисовывает Flash-объект, работал у меня.
Мне нужно изменить wmode
произвольных флэш-объектов на прозрачность из внешнего js файла, чтобы убедиться, что они не скрывают меню без использования JQuery или подобных библиотек.
В FF я использую getElementsByTagName("embed")
и устанавливаю атрибут. Кажется, что он работает хорошо.
В частности, у меня возникают проблемы с object
, установленными библиотекой swfObject
В IE7.
swfObject
создает следующий код в iE7:
<OBJECT id=mymovie height=400 width=134 classid=clsid:D27CDB6E-AE6D-11cf-96B8-444553540000>
<PARAM NAME="_cx" VALUE="3545">
<PARAM NAME="_cy" VALUE="10583">
<PARAM NAME="FlashVars" VALUE="">
<PARAM NAME="Movie" VALUE="imgs/site/tower.swf">
<PARAM NAME="Src" VALUE="imgs/site/tower.swf">
<PARAM NAME="WMode" VALUE="Window">
<PARAM NAME="Play" VALUE="0">
<PARAM NAME="Loop" VALUE="-1">
<PARAM NAME="Quality" VALUE="High">
<PARAM NAME="SAlign" VALUE="">
<PARAM NAME="Menu" VALUE="-1">
<PARAM NAME="Base" VALUE="">
<PARAM NAME="AllowScriptAccess" VALUE="">
<PARAM NAME="Scale" VALUE="ShowAll">
<PARAM NAME="DeviceFont" VALUE="0">
<PARAM NAME="EmbedMovie" VALUE="0">
<PARAM NAME="BGColor" VALUE="FFFFFF">
<PARAM NAME="SWRemote" VALUE="">
<PARAM NAME="MovieData" VALUE="">
<PARAM NAME="SeamlessTabbing" VALUE="1">
<PARAM NAME="Profile" VALUE="0">
<PARAM NAME="ProfileAddress" VALUE="">
<PARAM NAME="ProfilePort" VALUE="0">
<PARAM NAME="AllowNetworking" VALUE="all">
<PARAM NAME="AllowFullScreen" VALUE="false">
</OBJECT>
Я старался всячески настраивать wmode
на transparent
и делать flash не спрятать плавающие объекты без успеха, включая, но не ограничиваясь:
object
и измените его PARAM
wmode
на transparent
.object
(wmode=transparent
)object
SetValue
Нет, похоже, работает. Хотя wmode, похоже, изменяет Flash, все еще скрывает другие объекты с высоким значением z-index
. Что мне здесь не хватает?
Мне удался этот маленький трюк:
$("embed").attr("wmode", "opaque").wrap('<div>');
Он эффективно перерисовывает Flash-объект, работал у меня.
Решение Cirday в целом является правильным. Здесь версия non-jQuery, работающая в IE, FF и Chrome:
var embed = document.getElementsByTagName('embed');
for(var i = 0; i < embed.length; i++){
embed[i].setAttribute('wmode','opaque');
}
// FF does a "live" array when working directly with elements,
// so "els" changes as we add/remove elements; to avoid problems
// with indexing, copy to a temporary array
var els = document.getElementsByTagName('object');
var obj = [];
for(var i = 0; i < els.length; i++){
obj[i] = els[i];
}
for(var i = 0; i < obj.length; i++){
var param = document.createElement('param');
param.setAttribute('name','wmode');
param.setAttribute('value','opaque');
obj[i].appendChild(param);
var wrapper = document.createElement('div');
obj[i].parentNode.appendChild(wrapper);
if(obj[i].outerHTML){
// IE
var html = obj[i].outerHTML;
obj[i].parentNode.removeChild(obj[i]);
wrapper.innerHTML = html;
}else{
// ff/chrome
obj[i].parentNode.removeChild(obj[i]);
wrapper.appendChild(obj[i]);
}
}
Когда вы используете SWFObject для включения вспышки, должен быть параметр в методе embedSWF под названием "params". Вы передаете ему объект, как это:
swfobject.embedSwf(blah,blah,blah, { wmode:'transparent'});
Неверно, что флэш-ролик нужно переиздавать, чтобы изменить параметр wmode - его миф:
http://www.communitymx.com/content/article.cfm?cid=E5141
У меня такая же проблема с меню, и мне нужен код, чтобы добавить параметр wmode к любому объекту Flash, который вызывается javascript.
Я думаю, что исходное сообщение относится к этому, но я не уверен, с чего начать и нужно больше информации.
Я почти на 100% уверен, что вы не можете изменить параметр wmode во время выполнения. Я имею в виду, вы технически можете, но не окажете никакого эффекта. Я действительно удивлен, что у вас были успешные попытки. Какую версию и браузер для Flash-плееров вы успешно выполнили?
Извините, я не могу найти официальную ссылку, чтобы доказать свою точку зрения, но я оставлю вам эту очень интересную ссылку о том, как работает wmode (обновляется до игрока 10):
Приветствия,
Хуан