0

使用jquery.fancybox-1.2.6.js進行模式彈出時,它在我設置爲兼容模式的IE8以外的每個平臺上都可以使用。Fancybox在IE8兼容模式下獲取javascript「未執行」錯誤

當模態試圖顯示我得到一個JavaScript「未實現」的錯誤在頁面上,使模式不斷彈出。它給出了jquery.fancybox-1.2.6.js的上發生錯誤的行號(行207),這包含以下

$("#fancy_content")[0].style.removeExpression("height"); 

我做了一些老學校其實有警報報表發現,它似乎.style工作,它是removeExpression函數是「未實現」。

任何人都能解決這個問題?

+0

很少有開源庫可以在IE8兼容模式下工作。一般來說,只有在您的網站編碼出現錯誤時纔會進入兼容模式,因此這不是人們試圖支持的場景。 – Domenic 2013-06-24 04:05:02

回答

1

我能夠註釋掉得罪零件,它似乎對我很好地工作現在:

//This was causing error in IE8 in compatibility mode 
//   if (oldIE || ieQuirks) { 
//    $("#fancy_content")[0].style.removeExpression("height"); 
//    $("#fancy_content")[0].style.removeExpression("width"); 
//   } 

      if (pad > 0) { 
       width += pad * 2; 
       height += pad * 2; 

       $("#fancy_content").css({ 
        'top': pad + 'px', 
        'right': pad + 'px', 
        'bottom': pad + 'px', 
        'left': pad + 'px', 
        'width': 'auto', 
        'height': 'auto' 
       }); 

//This was causing error in IE8 in compatibility mode 
//    if (oldIE || ieQuirks) { 
//     $("#fancy_content")[0].style.setExpression('height', '(this.parentNode.clientHeight - ' + pad * 2 + ')'); 
//     $("#fancy_content")[0].style.setExpression('width', '(this.parentNode.clientWidth - ' + pad * 2 + ')'); 
//    } 

似乎奇怪,它的作品沒有這一點,但也許它不會爲大家取決於如何工作的,他們正在使用fancybox ...

0

你已經發布了一個答案,但有一些我認爲可能值得嘗試。

.style.removeExpression是我期望沒有實現的。 代碼有助於quirksmode做正確的大小。

所以不是

$("#fancy_content")[0].style.removeExpression("height"); 

嘗試做

$("#fancy_content").height('auto') 

後來

$("#fancy_content").height($(window).height() - pad * 2); 

與寬度相同的事情。

我不確定尺寸設置是否重要,這可能很重要,因爲有很多內容並且div可能會過大。有很多的內容試試,或與螢火蟲或東西:)

0

我叩頭這是一個老問題,但這裏是我留給後人的兩分錢堅持一個大的圖像有...

我遇到同樣的當我將我的網站從jQuery版本1.4.2升級到1.8.3時出現問題。 這個問題似乎是確定的,如果boxModel存在多麼花哨盒,通過這個代碼:

ieQuirks = $.browser.msie && !$.boxModel;

在jQuery的$ .boxModel的新版本返回undefined(它是在1.3過時),這是falsey ,使所有瀏覽器的測試都成爲可能。使用$ .support.boxModel而不是$ boxModel固定的問題對我來說:

ieQuirks = $.browser.msie && !$.support.boxModel;

現在,這些代碼塊沒有進入,除非它是預期的瀏覽器之一。