2015-09-21 136 views
0

我已經使用了這個,並嘗試了我找到的幾個答案,但無法解決我的問題。bootstrap ie8模態彈出

我有一個模式彈出應該出現在按鈕按下。這適用於所有其他瀏覽器/版本,但IE。一個客戶必須使用IE 8(全部仍然在XP上,但請不要爭論他們應該更新,這在將來不會發生。)

這是我的一些html代碼。 (賽事詳情略去了)

<div class="modal fade" id="collect-email" data-backdrop="static" data-keyboard="false"> 
    <div class="modal-header"> 
     <a class="close" data-dismiss="modal">&times;</a> 
     <h3>Collect Customer Email</h3> 
    </div> 
    <div class="modal-body"> 

....

我已經html5shiv加載。我也有下面的js代碼,它應該刪除淡入淡出的操作,並使模式工作。

var ie = (function(){ 
    var undef, 
     v = 3, 
     div = document.createElement('div'), 
     all = div.getElementsByTagName('i'); 

    while (
     div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->', 
     all[0] 
    ); 
    return v > 4 ? v : undef; 
}()); 

$(document).ready(function() {   
    if (ie < 10) { 
      jQuery('.fade').removeClass('fade'); 
    } 
... 

但是,只要頁面被瀏覽,模態就可見。按下模式彈出窗口上的關閉或確定按鈕不會再次隱藏它。

更新:我換了我的ie版本檢測代碼爲此,它檢測到一個特定的功能。

if(! document.addEventListener ){ 
     alert("you got IE8 or less"); 

     jQuery('.fade').removeClass('fade'); 
     $('#collect-email').modal({ show: false }); 
    } 

警報彈出,所以它捕捉到較早的瀏覽器。淡入淡出,所以問題是行; $('#collect-email')。modal({show:false});我添加了試圖強制模式消失。

編輯:找到解決方法。 如果我在適當的時候手動隱藏並顯示包裹模態的div,則代碼的其餘部分工作。所以它不夠優雅,但是因爲這是xp/ie8,所以現在我不會爲此丟失太多睡眠。

+0

除了刪除類,您可以嘗試使用show方法。以防萬一它在引擎蓋下做了些什麼。 IE:jQuery('。modal')。modal('show') – Ixonal

+0

這就是我正在做的顯示/隱藏模式。我現在主要關心的是爲什麼它可以從偏移量中看到,並且永遠不會消失。我希望如果我可以破解它,那麼其餘的應該很容易 – Matt

+0

聽起來就像在那裏有某種形式的javascript錯誤。 IE有一個壞習慣,只是在它不喜歡的東西出現時停止JS執行。你的代碼是否通過linter運行? – Ixonal

回答

0

它是否刪除了標記中的淡化類? (通過檢查元素檢查)。如果不是,可能你的功能不正確。看看http://api.jquery.com/jquery.browser/以及

+0

是的,它確實刪除淡化類,我們使用jQuery 1.9,所以我不能使用jquery.browser – Matt

+0

我看到它已被棄用..對不起 – Stefan