我有一个这样的系统:当mainsite打开时,会出现一个flash图库,当用户点击图像时,使用Flash的“ExternalInterface.call”函数,我调用一个javascript函数打开一个名为java的对话框模式nyromodal(通过ajax从对话框内的另一个页面获取原始HTML数据)在flash影片上。这就是问题发生的时候:
在谷歌浏览器中,它可以正常运行,但其他浏览器会出现问题:
使用Internet Explorer,对话框会打开但是当我点击“关闭”按钮时,对话框会停留在那里,奇怪的是如果我最小化IE按钮并最大化它,对话框会消失。
使用Firefox,在打开触发的对话框时,对话框窗口只显示一些损坏的图形,但是如果我移动鼠标,它会显示内容。
什么可能导致这个问题?我该如何解决?
这是源代码,网站不在任何网站上,因此我无法直接显示:
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link type="text/css" href="/media/style.css" rel="stylesheet" />
<link rel="stylesheet" href="/media/nyroModal.full.css" type="text/css" media="screen" /> <script type="text/javascript" src="/media/jquery.js"></script>
<script language="javascript">AC_FL_RunContent = 0;</script>
<script type="text/javascript" src="/media/AC_RunActiveContent.js"></script>
<script type="text/javascript" src="/media/jquery.nyroModal-1.5.2.pack.js"></script>
<script type="text/javascript">
function showItem(i,x){
var myurl = "/item/?i="+i;
$.nyroModalManual({url:myurl,title:x});
}
</script>
</head>
<body bgcolor="#000000">
<!--url's used in the movie-->
<!--text used in the movie-->
<!-- saved from url=(0013)about:internet -->
<div STYLE="z-index: 1;"><center>
<script language="javascript">
if (AC_FL_RunContent == 0) {
alert("This page requires AC_RunActiveContent.js.");
} else {
AC_FL_RunContent(
'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0',
'width', '100%',
'height', '600',
'src', '/media/preview',
'quality', 'high',
'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
'align', 'middle',
'play', 'true',
'loop', 'true',
'scale', 'noScale',
'wmode', 'transparent',
'devicefont', 'false',
'id', 'preview',
'bgcolor', '#2e2e2e',
'name', 'preview',
'menu', 'true',
'allowFullScreen', 'false',
'allowScriptAccess','sameDomain',
'movie', '/media/preview',
'salign', ''
); //end AC code
}
</script>
<noscript>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="1024" height="850" id="preview" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="false" />
<param name="movie" value="/media/preview.swf" /><param name="quality" value="high" /><param name="bgcolor" value="#000000" /> <embed src="/media//media/preview.swf" quality="high" bgcolor="#000000" width="100%" height="850" name="preview" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</noscript>
</center>
</div>
</body>
</html>
答案 0 :(得分:8)
透明不适用于此。要通过Flash显示HTML,您需要使用wmode="opaque"
显示电影。
此外,将电影的CSS zIndex属性设置为0,弹出窗口的1000(或任何高于0的值)将在某些浏览器中有所帮助。
答案 1 :(得分:1)
您可以使用iframe垫片解决此问题,另请参阅this answer。
答案 2 :(得分:1)
var flashFlag = false;
var flashObjs;
// on javascript Dialog open event
flashFlag = checkflashContent();
function checkflashContent() {
//alert('checking for flash');
var flashObjects = new Array();
var flag = false;
for (i = 0; i < document.getElementsByTagName("object").length; i++) {
flashObjects[i] = document.getElementsByTagName("object")[i];
// alert('found flash');
jQuery(flashObjects[i]).hide();
flag = true;
}
flashObjs = flashObjects;
return flag;
}
// on Javascript dialog close event
function closeDialog(){
...
...
if (flashFlag) {
//alert('dialog closed, showing flash');
for (i = 0; i < flashObjs.length; i++) {
jQuery(flashObjs[i]).show();
}
}
// On Open Event get the elements by tag Name (OBJECT)
// and use jQuery .hide to hide the content and on
// dialog close event use jQuery .show to show the flag back.
答案 3 :(得分:0)
您需要使用透明或不透明的wmode嵌入闪存。
但要准备好玩。它周围有一些奇怪的错误。
答案 4 :(得分:0)
听起来你的浏览器安装有些腐败,无论嵌入配置如何,这都应该是一个严重的问题。在Win32 / OS级别或多或少地生成警报窗口,如果它们显示不正确或有损坏,那么您的计算机就会被打开。
答案 5 :(得分:0)
你有一个奇怪的旧学校HTML和XHTML混合物。我会取出中心标签,身体上的bgcolor属性,并将包装div的样式放入样式中,即使它只是嵌入在页面中。
那就是说,我能想到的唯一可能是给你一些问题的是你在div上设置了z-index,但没有位置。尝试添加位置:相对于div,看看是否能解决你的问题。