2011-06-19 21 views
0

我有一个Flash SWF文件正在运行的页面的iframe;有没有人有一个想法如何使它透明,以便我的下拉菜单应该完美显示?请注意,我无法编辑源页面(仅在Flash页面中添加param = wmode, value = transparent),但如果有机会在iframe或我的页面上使用某些JavaScript,我已经尝试过allowtransparency="true"background-color="transparent"带有Flash内容的iframe html页面为下拉菜单创建问题

回答

0

对不起,但没有办法做到这一点。 除非您在显示页面的页面上有控制权并添加了wmode = transparent参数。这是自从Flash上​​出现网页以来最大的问题之一。 你可以做什么,是写一封电子邮件给闪存页面的主人,并请他添加该参数。

1

在菜单打开时,您可以暂时隐藏包含div的闪光灯。菜单打开时使用javascript设置flashDiv.style.display = "none";,并在菜单关闭时将其设置回flashDiv.style.display = "block"

+0

+1 - 这是一个有趣的想法。但是,切换元素的'style.display'属性可能会导致页面重排。您可能希望切换“style.visibility”属性(在“隐藏”和“可见”之间)。 – Luc125

0

我建议您增加下拉菜单中style.zIndex属性的值,以便即使它不透明也可能出现在iframe前面。但这只是一个想法,我不知道它是否会起作用。

要试试这个,因为浏览器忽略非定位元素的style.zIndex财产,你的下拉菜单,然后应具有style.position"relative""absolute"

编辑:我可以看到你现在正试图添加一个makeWmode函数到你的swfobject.js版本。当然,我希望你的代码将工作,但在其他方面这里是我的,如果我可以帮你...

function makeWMode(id, mode) { // id: the id of the <object> tag of the Flash object; in this case I think it is "content" 
    var object = swfobject.getObjectById(id); 
    var params = object.getElementsByTagName("param"); 
    var success = false; 
    for (var i = 0; i< params.length; i++) { 
     if (params[i].name.toLowerCase() == "wmode") { 
      params[i].value = mode; 
      success = true; 
      break; 
     } 
    } 
    if (success == false) { 
     var param = document.createElement("param"); 
     param.name = "wmode"; 
     param.value = "transparent"; 
     object.appendChild(param); 
     success = true; 
     return success; 
    } 
} 

使用makeWMode("content", "transparent")添加了标签<param name="wmode" value="transparent">object标签,但它可能不会有embed标签工作。

+0

让我试试你的想法..顺带感谢至少有一个答案在这里.. – Ilyas

0

守则的index.html是象下面这样:

<script type="text/javascript" src="files/swfobject.js">//</script> 
<script type="text/javascript" src="files/swfaddress.js">//</script> 
<script type="text/javascript" src="files/facebook.js">//</script> 
    <script type="text/javascript"> 

var assetsFolder = 'assets'; 
    var mobileFolder = 'mobile'; 

    var changeURL = function(){ 
    if(document.getElementById('hrefMobile'))document.getElementById('hrefMobile').href = dir+mobileFolder+'/index.html'; 
    if(document.getElementById('hrefSEO'))document.getElementById('hrefSEO').href = dir+assetsFolder +'/seo/toc.html'; 
    delete changeURL; 
    } 
    if (document.addEventListener){ 
document.addEventListener("DOMContentLoaded", changeURL, false); 
} else { 
document.attachEvent("onDOMContentLoaded", changeURL); 
} 

    function afterLoad(){ 
    checkPage(); 
    setFocusOnFlash(); 
     } 

    function setFocusOnFlash(){ 
     var f=swfobject.getObjectById('content'); 

        if (f) { f.tabIndex = 0; f.focus(); } 

        } 
     function getURLParam() 
     { 
     var returnObject = {}; 
     var href = window.location.href; 
     if (href.indexOf("?") > -1) 
     { 
     var param = href.substr(href.indexOf("?")); 
       var arrayParam = param.split("&"); 
    returnObject['assets'] = assetsFolder; 
     for (var i = 0; i < arrayParam.length; i++) 
       { 
        var value = arrayParam[i].split("="); 
        returnObject[value[0]] = value[1]; 
       } 
     } 
     return returnObject; 
    } 
    var dir = "./files/"; 


    var getURI = function(){ 
      var URIArray = document.location.href.split('/'); 

      URIArray.length = URIArray.length-1; 
      var URIstr = URIArray.join('/'); 

      URIArray = null; 

      var URIarr = dir.split('/'); 
      URIarr[0] = URIarr[0]=='.'?'':URIarr[0]; 
      var dirStr = URIarr.join('/'); 

      URIstr = URIstr+dirStr; 

     return URIstr; 
     } 



     var swfName = "flippingbook.swf?rnd=44c3b8c18caec0e3862101a6d4de273f"; 

    var ua = navigator.userAgent.toLowerCase(), 
     platform = navigator.platform.toLowerCase(), 
     UA = ua.match(/(opera|ie|firefox|chrome|version)[\s\/:]([\w\d\.]+)?.*?(safari|version[\s\/:]([\w\d\.]+)|$)/) || [null, 'unknown', 0], 
     mode = UA[1] == 'ie' && document.documentMode; 

     var Browser = { 
     extend: Function.prototype.extend, 
     name: (UA[1] == 'version') ? UA[3] : UA[1], 
     version: mode || parseFloat((UA[1] == 'opera' && UA[4]) ? UA[4] : UA[2]), 
     Platform: { 
     name: ua.match(/ip(?:ad|od|hone)/) ? 'ios' : (ua.match(/(?:webos|android|bada|symbian|palm|blackberry)/) || platform.match(/mac|win|linux/) || ['other'])[0] 
     }, 
     Features: { 
     xpath: !!(document.evaluate), 
     air: !!(window.runtime), 
     query: !!(document.querySelector), 
     json: !!(window.JSON) 
     }, 
     Plugins: {} 
     }; 

     if(Browser.Platform.name == 'android' || Browser.Platform.name == 'ios') window.location = dir+mobileFolder+"/index.html"; 
     if(Browser.Platform.name == 'webos' || Browser.Platform.name == 'bada' || Browser.Platform.name == 'symbian' || Browser.Platform.name == 'palm' || Browser.Platform.name == 'blackberry') window.location = dir+assetsFolder+"/seo/page1.html"; 

     var flashvars = getURLParam(); 

    var params = {baseURI: getURI(), base: dir, allowFullScreen: true, allowScriptAccess: "sameDomain", quality: "high", scale: "noscale",bg:"transparent" }; 

     var attributes = {align: "middle" }; 

     swfobject.embedSWF(dir + swfName, "content", "100%", "100%", "10.0.0", dir + "expressInstall.swf", flashvars, params, attributes); 



     </script>