2013-05-14 59 views
3

所以我有一個相當大的web應用程序運行Dojo 1.8。一切工作正常在多個版本的IE和Firefox。我決定給1.9一個去,並將我的依賴從1.8改爲1.9。 Firefox在第一次運行時沒有任何顯着變化,運行良好。然而,IE 8和9版本都沒有做任何事情。所有靜態HTML內容(和動態jsp內容)都很好,所有ajax調用來獲得所需的模塊似乎都可以正常工作,但解析器表現得像它並沒有被調用過。控制檯中沒有錯誤,警告或任何內容。使用Dojo 1.9,所有解析在IE中失敗

我一直跟我的道場的配置,這是沒有什麼特別的比賽:

var dojoConfig = { 
    baseUrl: "js/", 
    async: true, 
    has: { 
      "dojo-firebug": true, 
      "dojo-debug-messages": true 
    }, 
    parseOnLoad: false, 
    isDebug: true, 
    tlmSiblingOfDojo: false, 
    packages: [ 
     { name: "dojo", location: "dojo-release-1.9.0/dojo" }, 
     { name: "dijit", location: "dojo-release-1.9.0/dijit" }, 
     { name: "dojox", location: "dojo-release-1.9.0/dojox" } 
    ] 
}; 

我發現,如果我註釋掉異步:真的,IE突然開始工作了。你可以想象,我真的想要異步真實。爲什麼這個絆倒IE?我希望我已經提供了足夠的信息。

編輯:我被包括在標籤的一個名爲common.js文件,它看起來大致是這樣的底部的腳本標籤調用解析器:

require([ 
    "dojo/parser", 
    "dojo/ready" 
    ], 
    function(parser, ready){ 
     ready(function(){ 
      parser.parse();  
     }); 
    }); 

我試着換出道場/準備好dojo/domReady!並把解析器解壓出來(function(){block也是一樣的結果。

+0

希望我有一個解決方案給你。我只能說IE是那裏最大的垃圾。它只給我一些問題。我創建的特殊解決方法始終與IE相關。無論如何,這裏的亮點是,我一直能夠找到一個解決方法,爲IE垃圾... – GoinOff 2013-05-14 13:55:10

+0

你/你在哪裏調用解析器? – BuffaloBuffalo 2013-05-14 14:27:30

+0

感謝您的意見,我對Dojo 1.9和IE10 – 2013-05-14 15:21:19

回答

2

我敢紀念我自己的答案是正確的了比爾Keese酒店時,Dijit的鉛... :)

但嚴重的是,由於比爾張貼了這個,實際的問題已得到糾正,並提交。這是在票#17141在以上道場解決,幷包含在最新的1.9.1版本:

https://bugs.dojotoolkit.org/query?group=status&milestone=1.9.1

更新至該版本修正了這個問題,現在IE正常工作。

0

我覺得這個解析器太早調用了。使用同步方式加載(把async放在false上),加載所有內容需要相當長的時間 我曾經有類似的問題,並且通過使用較低的優先級(=較高的值),我們設法讓事件延遲到足以讓所有的東西都能正常工作。這個:

require([ 
    "dojo/parser", 
    "dojo/ready" 
], 
function(parser, ready){ 
    ready(1001, function(){ 
     parser.parse();  
    }); 
}); 

如果不行的話k,嘗試使用更高的數字。這可能不是一個乾淨的解決方案,但它可能工作。

數字1001不是由順便組成的。在Dojo中有幾個「保留」的優先級,當您不指定優先級時,將使用優先級1000。還有一些其他數字,例如,當您使用優先級80時,它將在自動分析發生之前執行。

+0

感謝您的迴應...不幸的是,它沒有奏效。我嘗試將數字更改爲79,81,1001和10001,但我仍然得到相同的行爲。 – Bal 2013-05-17 18:15:00