2014-03-05 38 views
1

我在Firefox上開發了一個AngularJS 1.2.13(和JQuery 1.11.0)的應用程序。它也適用於Chrome。現在是困難的部分。我已經遵循了幾個建議,讓這個工作在IE8上。在IE8中修復AngularJS問題

當我加載頁面時,我目前在開發工具窗口的JS控制檯中獲得了非常有用的「[object Error]」(沒有其他)。該頁面顯示了下載的原始html,所以Angular基本上無能爲力。

這裏是我的index.html的頂部:

<!DOCTYPE html> 
<html xmlns:ng="http://angularjs.org" id="ng-app" ng-app="DiagApp"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
<!--[if IE 8]><!--> <meta http-equiv="X-UA-Compatible" content="IE=8" /> <!--<![endif]--> 

即使我不是怪異模式(在開發工具窗口中,將「文件模式」說:「IE7標準」,而不是「Quirks模式「),我仍然得到以下幾點:

[$sce:iequirks] Strict Contextual Escaping does not support Internet Explorer version < 9 in quirks mode. You can fix this by adding the text <!doctype html> to the top of your HTML document. See http://docs.angularjs.org/api/ng.$sce for more information. 

http://errors.angularjs.org/1.2.13/ $ SCE/iequirks angular.js,行3689個字符,19

所以,我增加了以下的模塊中我的配置功能,whic^h修復了這個:

$sceProvider.enabled(false); 

當我查看了「腳本」選項卡中的HTML,這一切似乎是正確着色,這表明對我來說,正確驗證(我在我的HTML導致早先發現一個錯字這不會正確着色(Firefox和Chrome忽略的錯字))。

我設置了斷點以顯示它正在加載我的模塊,並且也在主控制器中。這表明它正在加載模塊,但它不會打到我的主控制器。我嘗試在angularjs代碼中設置一些斷點,但是這導致了各種各樣曲折的段落,沒有明顯的價值。

我聽說過我應該使用< = IE8的一些polyfills,但我只注意到提及< = IE7的polyfills。

其他我可以試試嗎?

+0

我敢肯定,你不會得到Angular 1.2 *在舊IE瀏覽器上工作。我不得不支持我們的Angular網站的舊IE瀏覽器,我可以使用的最好的是1.1.5 – Ian

+0

回到1.1.5是另一個掙扎。我甚至無法弄清楚如何讓我的應用程序在Firefox 1.1上運行。現在我的ngRepeats都沒有工作。沒有錯誤,它只是沒有做任何事情。比較1.1.4和1.2.14中ngRepeat的文檔,我沒有看到任何明顯的語法差異。 –

+0

我不認爲這個問題是用ng-repeat來具體說明的。你是否使用了其他可能需要降級才能使用1.1.5的庫/插件?您是否在瀏覽器控制檯中看到任何錯誤?我和你一樣使用相同的''/''格式,所以這不是問題。您是否在http://docs.angularjs.org/guide/ie上關注了其他所有內容? – Ian

回答

2

有考慮,如果你想爲你的IE8角應用程序的支持,即幾個因素:

  • 你需要polyfil您的JSON照顧的字符串化和分析本身不支持 功能由老版本的IE
  • 你需要明確創建任何自定義HTML元素標籤(自定義 HTML標籤是不支持IE8或以下)
  • 你需要擺脫任何miscelanious「DOCTYPE」廢話你需要使用「ng-app」在 致敬(我注意到你已經採取了這一照顧)
  • 你需要創建一些JS功能polyfills是IE 8 本身不支持,例如「的forEach」

從我見過的HTML(上圖),它看起來像需要進一步修改您的HTML標頭以便開始。在我的情況下,我有一個共享的'_Layout。CSHTML」頁面,在這裏我做了以下變化一次且只:

<!--[if lte IE 8]> 
     @Styles.Render("~/Content/iecss") 
     <script src="~/Scripts/Libs/respond.min.js"></script> 
     <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7/html5shiv.js"></script> 
    <![endif]--> 
    <!--[if lt IE 9]> 
     <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> 
    <![endif]--> 
    <!--[if lte IE 8]> 
     <script> 
     document.createElement('ng-include'); 
     document.createElement('ng-pluralize'); 
     document.createElement('ng-view'); 
     document.createElement('ng:include'); 
     document.createElement('ng:pluralize'); 
     document.createElement('ng:view'); 
     </script> 
    <![endif]--> 
    <!--[if lt IE 8]> 
     <script src="~/Scripts/Libs/json2.js"></script> 
    <![endif]--> 
    <!--[if lte IE 8]> 
     <script> 
     document.createElement('my-editor'); 
     </script> 
    <![endif]-->