Using bgiFrame (ie6 plugin) to overlay flash content which does not use wmode crossbrowser
I have a site which contains flash and a menu, and I need to be able to overlay the flash with the menu but can't use wmode:transparent or opaque as it affects the performance too much.
I found the following plugin which allows this by using as iframe, but this falls over in newer browsers. (seemed to work out of the box in ie6/7)
http://plugins.jquery.com/project/bgiframe ( Change the z index of flash content )
I found a post here Invalid Character DOM Exception in IE9 where someone explains why it doesn't work but I haven't been able to get it working.
the original plugin code is
$.fn.bgIframe = $.fn.bgiframe = function(s) {
// This is only for IE6
if ( $.browser.msie && /6.0/.test(navigator.userAgent) ) {
s = $.extend({
top : 'auto', // auto == .currentStyle.borderTopWidth
left : 'auto', // auto == .currentStyle.borderLeftWidth
width : 'auto', // auto == offsetWidth
height : 'auto', // auto == offsetHeight
开发者_Go百科 opacity : true,
src : 'javascript:false;'
}, s || {});
var prop = function(n){return n&&n.constructor==Number?n+'px':n;},
html = '<iframe class="bgiframe"frameborder="0"tabindex="-1"src="'+s.src+'"'+
'style="display:block;position:absolute;z-index:-1;'+
(s.opacity !== false?'filter:Alpha(Opacity=\'0\');':'')+
'top:'+(s.top=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderTopWidth)||0)*-1)+\'px\')':prop(s.top))+';'+
'left:'+(s.left=='auto'?'expression(((parseInt(this.parentNode.currentStyle.borderLeftWidth)||0)*-1)+\'px\')':prop(s.left))+';'+
'width:'+(s.width=='auto'?'expression(this.parentNode.offsetWidth+\'px\')':prop(s.width))+';'+
'height:'+(s.height=='auto'?'expression(this.parentNode.offsetHeight+\'px\')':prop(s.height))+';'+
'"/>';
return this.each(function() {
if ( $('> iframe.bgiframe', this).length == 0 )
this.insertBefore( document.createElement(html), this.firstChild );
});
}
return this;
};
In the end I managed to rewrite the plugin which enabled content to be overlayed in all versions of IE but wasn't very successful in other browsers. Firefox overlayed content without the need for the plugin.
精彩评论