我有一个像button(iFrame版)的Facebook,覆盖在一个完整的浏览器Flash应用程序的顶部。 类似的button被连接起来,像应用程序中的单独图像一样,当每个新图像被显示时,类似的button被使用ExternalInterface的数据刷新。
类似的button使用JQuery fadeIn()/ fadeOut()淡入淡出每个新的图像,再次使用ExternalInterface调用。
我遇到的问题是,在Windows上,这似乎并不想工作,特别是在Firefox …
CSS:
html { height: 100%; overflow: hidden; min-width: 800px; min-height: 600px; } #flashContent { position: absolute; top: 0px; left: 0px; height: 100%; width: 100%; z-index: 1; } body { margin: 0; padding: 0; background-color: #000000; } #fb-like { position: absolute; bottom: 32px; left: 510px; width: 280px; z-index: 9999; display: none; }
fb-like是包含iFrame的div,它的z-index是9999,只是为了确保它总是在最前面。
这里是使用的JS:
<script type="text/javascript"> var isVisible = false; function showLikeButton( visible ){ if( visible == true ) { $('#fb-like').fadeIn( 'slow' ); isVisible = true; } else if ( isVisible ) { $('#fb-like').fadeOut( 'slow' ); isVisible = false; } } var begOfUrl = "http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fmywebsite.com%2fdirectory"; var endOfUrl = "&layout=button_count&show_faces=false&width=150&action=like&colorscheme=dark&height=21"; function sendIdToLikeButton( title, id ){ $( '#facebook-like' ).attr( 'src', begOfUrl + "%3Fid=" + id + endOfUrl ); } </script>
其中sendIdToLikeButton方法将使用ExternalInterface从Flash发送的照片的ID来重新创buildiFrame的src属性。
当然,因为这是一个Flash应用程序,这里是最小的HTML:
<body> <div id="fb-like"> <iframe src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fnfb.designaxiom.com/build13&layout=button_count&show_faces=false&width=150&action=like&colorscheme=dark&height=21" scrolling="no" frameborder="0" style="position: absolute; border:none; overflow:hidden; width:300px; height:40px;" allowTransparency="true" id="facebook-like"></iframe> </div> <div id="flashContent"> <a href="http://www.adobe.com/go/getflashplayer"> <img src="http://img.zgserver.com/javascript/get_flash_player.gif" alt="Get Adobe Flash player" /> </a> </div> </body>
再说一遍,除了Windows中的Firefox以外,这个function还能正常工作,我不知道该怎么办。 我假设这是一个错误的CSS或JavaScript的地方。
任何帮助是极大的赞赏。
提前致谢。
语法
经过几个星期的反复,我终于明白了这一点。 事实证明,问题出在iframe被置于Flash内容之上。
这是通过添加一个参数swfobject调用解决 – 设置为透明的wmode:
var params = {}; params.bgcolor = "#000000"; params.allowfullscreen = "true"; params.allowscriptaccess = "true"; params.wmode = "transparent"; var attributes = { id: "nfb", name:"nfb" }; var swfUrl = "Runner.swf"; swfobject.embedSWF( swfUrl, "flashContent", "100%", "100%", "10.0.0", false, flashvars, params, attributes );
将wmode设置为透明可允许在每个浏览器中将“透明”iframe放置在应用程序的顶部。
所以事实证明,这完全不是一个像facebook这样的按钮的问题,而是使用iframe和Flash。 当然,如果您不使用SWFObject来显示swf文件,则wmode是一个参数,可以在发布swfs时在Flash的“发布属性”中进行设置。
干杯