2015-08-08 46 views
2

我正在研究一個使用textAngular的角度應用,該角色取決於rangy-core和rangy-selectionsaverestore。我在使用最新的IE瀏覽器時出現以下錯誤:在Internet Explorer中初始化Rangy.js時出錯

Module 'WrappedSelection' failed to load: Unspecified error. 
Error: Unspecified error. 
    at Anonymous function (js/plugins/textAngular/rangy-core.js:2970:29) 
    at Anonymous function (js/plugins/textAngular/rangy-core.js:2923:14) 
    at Anonymous function (js/plugins/textAngular/rangy-core.js:415:21) 
    at Module.prototype.init (js/plugins/textAngular/rangy-core.js:387:13) 
    at init (js/plugins/textAngular/rangy-core.js:294:17) 
    at loadHandler (js/plugins/textAngular/rangy-core.js:3825:17) 

Module 'SaveRestore' failed to load: Unable to get property 'isDirectionBackward' of undefined or null reference 
TypeError: Unable to get property 'isDirectionBackward' of undefined or null reference 
    at Anonymous function (js/plugins/textAngular/rangy-selectionsaverestore.js:30:9) 
    at Anonymous function (js/plugins/textAngular/rangy-core.js:415:21) 
    at Module.prototype.init (js/plugins/textAngular/rangy-core.js:387:13) 
    at init (js/plugins/textAngular/rangy-core.js:294:17) 
    at loadHandler (js/plugins/textAngular/rangy-core.js:3825:17) 

此錯誤似乎在rangy初始化過程中發生。

這很奇怪,TextAngular演示在Internet Explorer上工作正常。演示和我的應用程序之間的一個不同之處在於,我使用的是未分類的rangy庫。最後,這些錯誤不會發生在Chrome或Firefox上。

雖然應用程序加載(我覺得上面的錯誤是在控制檯只是警告),當我點擊進入textAngular場,我看到以下錯誤:

對象不支持屬性或方法「getSelection ' File:textAngular.js,Line:693,Column:4

我在textAngular或rangy github中找不到任何解決這些問題的東西。有沒有人遇到過這些問題?

如果有幫助,我可以將鏈接發佈到我們的應用程序。

謝謝!

+0

我以前沒有見過這個問題,但看瘦長的代碼,我可以看到一個錯誤:選擇保存/恢復模塊缺少依賴關係。我已經解決了這個問題,並會在下週左右發佈修補程序版本。 –

+0

感謝您的回覆。你認爲缺少的依賴關係導致腳本在IE中失敗,而不是其他瀏覽器? –

+1

@TimDown,我注意到提交併相應地更新了我的文件。 現在,我只在IE中得到這個錯誤: '模塊'WrappedSelection'加載失敗:未指定。' –

回答

3

看起來像textAngular初始化rangy選擇得太早。我通過更新textAngular /距離/ textAngular.js LN 2036檢查四肢修長庫

window.onload = function() { 
     // Ensure that rangy and rangy.saveSelection exists on the window (global scope). 
     // TODO: Refactor so that the global scope is no longer used. 
     if(!window.rangy){ 
      throw("rangy-core.js and rangy-selectionsaverestore.js are required for textAngular to work correctly, rangy-core is not yet loaded."); 
     }else{ 
      window.rangy.init(); 
      if(!window.rangy.saveSelection){ 
       throw("rangy-selectionsaverestore.js is required for textAngular to work correctly."); 
      } 
     } 
    }; 
+0

我得到了同樣的錯誤(只有當我的網頁iframed雖然)並使用此修復程序。控制檯仍然打印錯誤,但是頁面加載並工作得很好。謝謝! – MartinValen

1

我有同樣的問題之前等待的onload修復了這個問題。我嘗試了window.onload修復建議,但它只是讓我到另一個關於textAngularSetup未加載錯誤。我把window.onload修復了出來,幷包含了textAngularSetup.js文件。它現在在Chrome和IE中運行良好。我很困惑,因爲我沒有看到包含在演示中的文件。

+0

只是爲了澄清,以防其他人混淆爲HorseFly:textAngularSetup不包含在演示中,因爲演示使用textAngular.min.js,其中包含textAngular.js和textAngularSetup.js。當你包含window.onload-fix時,你需要使用textAngular.js,然後是textAngularSetup.js。 – MartinValen

0

分享我的解決方案,我也在IE 11(edge mode)得到了同樣的問題,嘗試用上面的解決方案(window.onload),但問題仍然存在於應用程序中。

我已經做了以下變化,

  1. 新增window.onload在上述方案中,textangular.js - 的run()函數

  2. 替換textangular-rangy.min.jsrangy.core and rangy-selectionsaverestore依賴項,

修改核心代碼來處理異常,

文件:瘦長核心。JS,line number:2967-2972

     var r2; 
         try { 
          // code generating above exception 
          r2 = r1.cloneRange() 
          r1.setStart(textNode, 0); 
          r2.setEnd(textNode, 3); 
          r2.setStart(textNode, 2); 
          sel.addRange(r1); 
          sel.addRange(r2); 
          selectionSupportsMultipleRanges = (sel.rangeCount == 2); 
         } catch (e) { 
          selectionSupportsMultipleRanges = false; 
         } 

這可能有助於在IE11測試,鉻