ie11不兼容window.createPopup的问题解决

本文详细介绍了在IE11中遇到window.createPopup方法不兼容的问题,以及如何通过替代方案解决这个问题。通过对浏览器兼容性的深入理解,找到最佳的适配策略,确保在不同浏览器环境下应用的正常运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在做ie11的兼容性问题,每次都会因为window.createPopup这个已经不支持,而导致会报一些稀奇古怪的错误,比如,var popup=window.createPopup之后,popup这个对象无法使用popup.document.getElementById,会报SCRIPT438: 对象不支持“getElementById”属性或方法这个错,现在终于解决的,,只要在每次调用之前加一个兼容性判断就OK,判断方法如下
if (!window.createPopup) {  
    var __createPopup = function() {  
        var SetElementStyles = function( element, styleDict ) {  
            var style = element.style ;  
            for ( var styleName in styleDict )style[ styleName ] = styleDict[ styleName ] ;   
        }  
        var eDiv = document.createElement( 'div' );   
        SetElementStyles( eDiv, { 'position': 'absolute', 'top': 0 + 'px', 'left': 0 + 'px', 'width': 0 + 'px', 'height': 0 + 'px', 'zIndex': 1000, 'display' : 'none', 'overflow' : 'hidden' } ) ;  
        eDiv.body = eDiv ;  
        var opened = false ;  
        var setOpened = function( b ) {  
            opened = b;   
        }  
        var getOpened = function() {  
            return opened ;   
        }  
        var getCoordinates = function( oElement ) {  
            var coordinates = {x:0,y:0} ;   
            while( oElement ) {  
                coordinates.x += oElement.offsetLeft ;  
                coordinates.y += oElement.offsetTop ;  
                oElement = oElement.offsetParent ;  
            }  
            return coordinates ;  
        }  
        return {htmlTxt : '', document : eDiv, isOpen : getOpened(), isShow : false, hide : function() { SetElementStyles( eDiv, { 'top': 0 + 'px', 'left': 0 + 'px', 'width': 0 + 'px', 'height': 0 + 'px', 'display' : 'none' } ) ; eDiv.innerHTML = '' ; this.isShow = false ; }, show : function( iX, iY, iWidth, iHeight, oElement ) { if (!getOpened()) { document.body.appendChild( eDiv ) ; setOpened( true ) ; } ; this.htmlTxt = eDiv.innerHTML ; if (this.isShow) { this.hide() ; } ; eDiv.innerHTML = this.htmlTxt ; var coordinates = getCoordinates ( oElement ) ; eDiv.style.top = ( iX + coordinates.x ) + 'px' ; eDiv.style.left = ( iY + coordinates.y ) + 'px' ; eDiv.style.width = iWidth + 'px' ; eDiv.style.height = iHeight + 'px' ; eDiv.style.display = 'block' ; this.isShow = true ; } }  
    }  
    window.createPopup = function() {  
        return __createPopup();   
    }  
}  

然后在接上

var winPopup = window.createPopup(); //Create the window to popup
这样就可以了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值