@ -191,8 +191,8 @@
offsetTop = 0 ;
do {
offsetLeft += el . offsetLeft ;
offsetTop += el . offsetTop ;
offsetLeft += ( BI . isIE ( ) ? window . getComputedStyle ( el ) . position === "fixed" ? el . offsetLeft / scale : el . offsetLeft : el . offsetLeft ) ;
offsetTop += ( BI . isIE ( ) ? window . getComputedStyle ( el ) . position === "fixed" ? el . offsetTop / scale : el . offsetTop : el . offsetTop ) ;
el = el . offsetParent ;
} while ( el ) ;
@ -231,12 +231,16 @@
} else {
var cBounds = this . popupView . element [ 0 ] . getBoundingClientRect ( ) ;
var pBounds = this . popupView . element [ 0 ] . parentElement . getBoundingClientRect ( ) ;
if ( parseInt ( cBounds . top ) >= parseInt ( pBounds . top ) && parseInt ( cBounds . left ) >= parseInt ( pBounds . left ) ) {
if ( cBounds . left + cBounds . width > body . clientWidth * scale ) {
this . popupView . element [ 0 ] . style . top = ( parseInt ( pBounds . top ) + transformY - document . body . scrollTop ) + "px" ;
this . popupView . element [ 0 ] . style . left = ( parseInt ( this . popupView . element [ 0 ] . style . left ) * scale ) + "px" ;
} else if ( this . options . direction === "right" ) {
this . popupView . element [ 0 ] . style . top = ( parseInt ( pBounds . top ) + transformY - document . body . scrollTop ) + "px" ;
this . popupView . element [ 0 ] . style . left = ( parseInt ( pBounds . right ) + transformY - document . body . scrollTop ) + "px" ;
} else if ( parseInt ( cBounds . top ) >= parseInt ( pBounds . top ) && parseInt ( cBounds . left ) >= parseInt ( pBounds . left ) ) {
this . popupView . element [ 0 ] . style . top = ( parseInt ( pBounds . bottom ) + transformY - document . body . scrollTop ) + "px" ;
this . popupView . element [ 0 ] . style . left = ( parseInt ( pBounds . left ) + transformY - document . body . scrollTop ) + "px" ;
}
if ( parseInt ( cBounds . top ) >= parseInt ( pBounds . top ) && parseInt ( cBounds . left ) < parseInt ( pBounds . left ) ) {
} else if ( parseInt ( cBounds . top ) >= parseInt ( pBounds . top ) && parseInt ( cBounds . left ) < parseInt ( pBounds . left ) ) {
this . popupView . element [ 0 ] . style . top = ( parseInt ( pBounds . bottom ) + transformY - document . body . scrollTop ) + "px" ;
this . popupView . element [ 0 ] . style . left = ( parseInt ( pBounds . left ) + transformY - document . body . scrollTop ) + "px" ;
}
@ -275,7 +279,9 @@
injectSearch . call ( this ) ;
var self = this ;
if ( this . popupView ) {
BI . nextTick ( function ( ) {
BI . defer ( function ( ) {
self . popupView . element [ 0 ] . parentElement . style . left = parseInt ( self . popupView . element [ 0 ] . parentElement . style . left ) * scale + "px" ;
self . popupView . element [ 0 ] . parentElement . style . top = parseInt ( self . popupView . element [ 0 ] . parentElement . style . top ) * scale + "px" ;
self . popupView . element [ 0 ] . parentElement . style . transform = "scale(" + scale + ")" ;
self . popupView . element [ 0 ] . parentElement . style . transformOrigin = "left top" ;
} )