首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用bgiFrame (ie6插件)覆盖不使用wmode跨浏览器的flash内容

使用bgiFrame (ie6插件)覆盖不使用wmode跨浏览器的flash内容
EN

Stack Overflow用户
提问于 2011-05-04 01:32:03
回答 1查看 405关注 0票数 0

我有一个网站,其中包含闪光灯和菜单,我需要能够覆盖与菜单闪光灯,但不能使用wmode:透明或不透明,因为它影响了太多的性能。

我发现下面的插件可以通过使用iframe来实现这一点,但这在较新的浏览器中出现了问题。(在IE6/7中似乎可以开箱即用)

http://plugins.jquery.com/project/bgiframe ( Change the z index of flash content )

我在Invalid Character DOM Exception in IE9上发现了一篇文章,里面有人解释了为什么它不能工作,但我一直没能让它工作。

原始的插件代码是

代码语言:javascript
复制
$.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
            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;
};
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-05-11 19:31:19

最后,我设法重写了这个插件,它可以在IE的所有版本中覆盖内容,但在其他浏览器中并不是很成功。Firefox在不需要插件的情况下覆盖内容。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5873340

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档