Javascript IE 10与Chrome和Firefox内部引导模式中的固定位置行为不同

Javascript IE 10与Chrome和Firefox内部引导模式中的固定位置行为不同,javascript,html,css,twitter-bootstrap,Javascript,Html,Css,Twitter Bootstrap,我们有一些弹出选择器,当选择器位于引导模式中时,此代码不适用的一个边缘情况是internet explorer。。。对我来说,chrome和firefox看起来是相对于模式边缘的,但也就是说,是相对于页面边缘的 .pickerModal { background-color: #fff; display: none; position: fixed; width: auto; min-width: 150px; max-height: 150px; overflow-y: scroll; ove

我们有一些弹出选择器,当选择器位于引导模式中时,此代码不适用的一个边缘情况是internet explorer。。。对我来说,chrome和firefox看起来是相对于模式边缘的,但也就是说,是相对于页面边缘的

.pickerModal
{
background-color: #fff;
display: none;
position: fixed;
width: auto;
min-width: 150px;
max-height: 150px;
overflow-y: scroll;
overflow-x: hidden;
border: solid rgba(103,103,103,1) 2px;
-moz-border-radius: 3px;
-webkit-border-radius: 3px;
border-radius: 3px;
z-index: 1051 !important;
padding: 0;
}

self.positionPicker = function (launchSelector, modal, modalPointer) {  

    var gCoord = launchSelector.localToGlobal(0, 0);
    var modalOffset = { top: 0, left: 0 };
    var modalWidth = 0;
    var scroll = document.documentElement.scrollTop || document.body.scrollTop;     

    if ($(launchSelector).closest('.modal-dialog').length) {

        var bootstrapModal = $($(launchSelector).closest('.modal-dialog')[0]);

        modalOffset = bootstrapModal.offset();
        modalWidth = bootstrapModal.width();

    }

    modalPointer.css({
        "top": (gCoord.y + launchSelector.height()) - modalOffset.top - scroll,
        "left": gCoord.x - modalOffset.left
    });

    if (modalWidth == 0) {
        modal.css({
            "top": (gCoord.y + launchSelector.height() + 7) - modalOffset.top - scroll,
            "left": (gCoord.x + modal.width()) > (window.screen.availWidth - 15) ? gCoord.x - ((gCoord.x + modal.width()) - modalOffset.left - (window.screen.availWidth - 15)) : gCoord.x
        });
    } else {            

        modal.css({
            "top": (gCoord.y + launchSelector.height() + 7) - modalOffset.top - scroll,
            "left": gCoord.x + modalOffset.left + modal.width() < $(window).width() ? Math.max(0, gCoord.x - modalOffset.left) : Math.max(0, gCoord.x - modalOffset.left - modal.width() + 10)
        });
    }

    if (modal.position().top < 0) {
        self.hideModal(self.modal());
    }

}
.pickerModal
{
背景色:#fff;
显示:无;
位置:固定;
宽度:自动;
最小宽度:150px;
最大高度:150像素;
溢出y:滚动;
溢出x:隐藏;
边框:实心rgba(103103,1)2px;
-moz边界半径:3px;
-webkit边界半径:3px;
边界半径:3px;
z指数:1051!重要;
填充:0;
}
self.positionPicker=函数(启动选择器、模态、模态指针){
var gCoord=launchSelector.localToGlobal(0,0);
var modalOffset={top:0,left:0};
var modalWidth=0;
var scroll=document.documentElement.scrollTop | | document.body.scrollTop;
if($(启动选择器).closest('.modal dialog').length){
var bootstrapModal=$($(launchSelector).closest('.modal dialog')[0]);
modalOffset=bootstrapModal.offset();
modalWidth=bootstrapModal.width();
}
modalPointer.css({
“顶部”:(gCoord.y+launchSelector.height())-modalOffset.top-滚动,
“左”:gCoord.x-modalOffset.left
});
如果(modalWidth==0){
modal.css({
“顶部”:(gCoord.y+launchSelector.height()+7)-modalOffset.top-滚动,
“左”:(gCoord.x+modal.width())>(window.screen.availWidth-15)?gCoord.x-((gCoord.x+modal.width())-modalOffset.left-(window.screen.availWidth-15)):gCoord.x
});
}否则{
modal.css({
“顶部”:(gCoord.y+launchSelector.height()+7)-modalOffset.top-滚动,
“left”:gCoord.x+modalOffset.left+modalOffset.width()<$(窗口).width()?Math.max(0,gCoord.x-modalOffset.left):Math.max(0,gCoord.x-modalOffset.left-modalOffset.width()+10)
});
}
if(模态位置().top<0){
self.hideModal(self.modal());
}
}
找到了答案:

/** 
* This is needed so that the pickers position correctly in all browsers in  modal or non modal windows.  
* Bootstrap css has some magic that makes fixed position elements relative to modal instead of page in chrome and firefox.
*/
.modal.in .modal-dialog 
{ 
 -moz-transform: none;
 -ms-transform: none;
 -o-transform: none;
 -ms-transform: none;
 transform: none;
}