2013-02-16 3 views
1

Я использую TinyMCE (v3.5.8) и интегрированный плагин iBrowser (v1.4.5) с Codeigniter 2.1.3, и я получаю ошибку JavaScript Uncaught TypeError: Cannot set property 'isMSIE' of null Пожалуйста, помогите мне решить эту проблему. Спасибо.Редактор TinyMCE: Uncaught TypeError: Невозможно установить свойство isMSIE из null

EDIT

Ошибка в iBrowser плагин.

Я ничего не изменил, как из загруженного файла.

Ошибка, возникающая в файле editor_plugin.js в папке плагина iBrowser.

iBrowser плагин URL: 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

+0

Сейчас я отредактировал свой вопрос –

+0

Отредактировал мой вопрос. Спасибо. –

ответ

2

Виновником является первой строкой кода:

ib = null; 

null не могут быть доступны в качестве объекта. Это будет вызывать TypeError, как вы видели. Исправление, я полагаю, было бы изменить эту строку:

ib = {}; 

Таким образом, он является объектом и может иметь свой набор isMSIE собственности.

Однако я немного озадачен, почему это было явно установлено на null. Я бы попробовал изменить эту строку кода и увидеть, что это что-то сломало, потому что, возможно, это могло быть причиной для ib, чтобы изначально было null.

+0

Спасибо. Позвольте мне попробовать –

+0

Я установил ib = {}, но я получаю еще одну ошибку: «Неиспользуемый ReferenceError: iBrowser_open не определен» - номер строки 30. тот же самый файл js. –

+0

@MansoorkhanCherupuzha Действительно эта функция не определена. Можете ли вы искать другие исходные файлы, где они определены? Этот плагин, похоже, очень глючный. У вас самая последняя версия?Возможно, вы захотите написать своего автора, чтобы сообщить им о проблеме или сообщить об ошибке. –

1

В файле editor_plugin.js (находится в папке плагина ibrowser корневой) закомментировал строку:

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

и добавить

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

Сделайте то же самое для editor_plugin_src.js, а также.

Должно быть исправлено. Исправлена ​​ошибка @PhpMyCoder. :)

Смежные вопросы