2013-02-16 100 views
1

我在Codeigniter 2.1.3中使用TinyMCE(v3.5.8)和集成iBrowser插件(v1.4.5),並且出現JavaScript錯誤Uncaught TypeError: Cannot set property 'isMSIE' of null 請幫我解決這個問題。 謝謝。TinyMCE編輯器:未捕獲TypeError:無法設置屬性'isMSIE'null

EDIT

錯誤是在iBrowser插件。

我沒有改變任何東西,從下載的文件。

iBrowser插件文件夾中的editor_plugin.js發生錯誤。

iBrowser插件網址:http://seoroot.com/blog/computing/programming/tinymce-ibrowser-plugin.html

editor_plugin.js包含下面的代碼。

ib = null; 

(function() { 
    tinymce.create('tinymce.plugins.IBrowserPlugin', { 
     init : function(ed, url) { 
      // load common script 
      tinymce.ScriptLoader.load(url + '/interface/common.js'); 

      // Register commands 
      ed.addCommand('mceIBrowser', function() { 
       var e = ed.selection.getNode(); 

       // Internal image object like a flash placeholder 
       if (ed.dom.getAttrib(ed.selection.getNode(), 'class').indexOf('mceItem') != -1) {return} 

       ib.isMSIE = tinymce.isIE; 
       ib.isGecko = tinymce.isGecko; 
       ib.isWebKit= tinymce.isWebKit; 
       ib.oEditor = ed; 
       ib.editor = ed; 
       ib.selectedElement = e;     
       ib.baseURL = url + '/ibrowser.php'; 
       iBrowser_open(); 
      }); 

      // Register buttons 
      ed.addButton('ibrowser', { 
       title : 'iBrowser', 
       cmd : 'mceIBrowser', 
       image: url + '/interface/images/tinyMCE/ibrowser.gif' 
      }); 

      // Add a node change handler, selects the button in the UI when a image is selected 
      ed.onNodeChange.add(function(ed, cm, n) { 
       cm.setActive('ibrowser', n.nodeName == 'IMG'); 
      }); 
     }, 

     getInfo : function() { 
      return { 
       longname : 'iBrowser', 
       author : 'net4visions.com', 
       authorurl : 'http://net4visions.com', 
       infourl : 'http://net4visions.com/ibrowser.html', 
       version : '1.4.0' 
      }; 
     } 
    }); 

    // Register plugin 
    tinymce.PluginManager.add('ibrowser', tinymce.plugins.IBrowserPlugin); 

})(); 

對不起。它是一個長碼。

注意:TinyMCE運行良好,但該插件有一些錯誤。

+3

好吧,給我幾個小時來設置一個本地實例。或者,發佈錯誤所在的代碼。檢查調用堆棧並查看它是否源自您的代碼。然後發佈你的代碼。 – alex 2013-02-16 04:44:19

+0

我現在編輯我的問題 – 2013-02-16 04:45:48

+0

編輯我的問題。謝謝。 – 2013-02-16 04:56:34

回答

2

罪魁禍首是代碼的第一行:

ib = null; 

null不能作爲一個對象來訪問。正如你所看到的那樣,這會產生一個TypeError。此修復程序,我認爲,將是該行更改爲:

ib = {}; 

這樣,它是一個對象,並且可以擁有isMSIE屬性設置。

但是,我有點困惑,爲什麼這是明確設置爲null。我會嘗試更改該代碼行,並查看是否會破壞某些內容,因爲可能原因是ib最初爲空。

+0

謝謝。讓我試試 – 2013-02-16 05:05:05

+0

我已經設置ib = {}但我得到另一個錯誤「未捕獲的ReferenceError:iBrowser_open未定義」 - 行號30.相同的js文件。 – 2013-02-16 05:07:10

+0

@MansoorkhanCherupuzha事實上這個函數是未定義的。你能搜索其他源文件的定義位置嗎?這個插件看起來很麻煩。你有最新版本嗎?您可能希望編寫作者以讓他們知道問題或提交錯誤報告。 – 2013-02-16 05:11:23

1

在文件editor_plugin.js(位於ibrowser根插件文件夾)註釋掉行:

tinymce.ScriptLoader.load(url + '/interface/common.js'); 

並添加此

$.getScript(url+'/interface/common.js'); 

執行相同的editor_plugin_src.js爲好。

應該修復。 由@PhpMyCoder修復也可以。 :)

相關問題