昨天升级了wordpress到新版本,结果Developer Formatter在插入代码时失败,第一个报错信息是:

 Javascript |  copy code |? 
1
Uncaught TypeError: undefined is not a function

firebug排查定位其错误应该是在wp-content/plugins/devformatter/devinterface.php生成的js文件,调用execInstanceCommand方法出错。

解决方法如下:

#vim wp-content/plugins/devformatter/devinterface.php,找到execInstanceCommand哪一行,修改为:

 Javascript |  copy code |? 
1
      if(HtmlEditor){
2
        edInsertContent(edCanvas, DevFmt_ContentStart + DevFmt_TheContent + DevFmt_ContentEnd);
3
      }else{
4
        alert(DevFmt_ContentStart + DevFmt_TheContent + DevFmt_ContentEnd);
5
        tinyMCE.execCommand('mceReplaceContent', false,
6
          switchEditors.wpautop(DevFmt_ContentStart + DevFmt_TheContent + DevFmt_ContentEnd));
7
      }

第二个问题是,插入带空格的代码后,页面上出现大量DVFMTSC字样,修改wp-content/plugins/devformatter/devfmt_editor.js文件如下:

 Javascript |  copy code |? 
1
2
block = block.replace(/{{DVFMTSC}}/gi, '<!--DVFMTSC-->&').replace(/\n/gi, "<br />");
3
 
4
修改为:
5
block = block.replace(/{{DVFMTSC}}/gi, '&').replace(/\n/gi, "<br />");

参考:

  • http://stackoverflow.com/questions/22813970/typeerror-window-tinymce-execinstancecommand-is-not-a-function

Leave a Reply