2011-06-19 19 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>