tinyMCE iframe中的JQuery SyntaxHighLighter插件

时间:2013-05-23 17:05:43

标签: jquery-plugins tinymce syntaxhighlighter

我发现了一个关于SyntaxHighlighter的问题。

但是,我正在谈论jquery插件而不是https://github.com/RichGuk/syntaxhl

我想在tinyMCE中突出显示源代码 我添加以下按钮:

ed.addButton('srccd', {
                     title: 'Source Code',
                     image: 'sourcecode.png',
                     onclick: function() {
                         ed.focus();       
                         var newSRCjq='<pre id="s1" class="highlight">'+ ed.selection.getContent() + '</pre>';
                         ed.selection.setContent(newSRCjq);


                           $.SyntaxHighlighter.init({})

                     }
                 });

我还使用另一个插件(片段),而不是init调用,我调用以下函数:

 $('iframe').contents().find('#s1').snippet("java",{style:'kwrite',box:"1"});

并且我没有达到预期的结果。

注意:我不会忘记导入所需的JS&amp;上面插件的CSS

1 个答案:

答案 0 :(得分:0)

一天后: 让我们介绍一下基于 JQuery Compiler的编译器 jQuery Syntax Highlighter v2.0.0

如何使用

而不是:

$('pre').snippet('java',{box:"1-2"});

添加本地或会话参数:

$('pre').snippetcache('local','java',{box:"1-2"});

==&gt;这意味着你有pre个元素。当您运行上面的代码片段时,我的插件将使用jQuery Syntax Highlighter编译代码,然后保存呈现的代码。因此,如果另一个pre具有相同的代码(内部文本),例如先前编译的pre之一,则编译器将从其缓存中检索呈现的代码。

但是,当您刷新页面时,将删除缓存。如果要使用有状态编译器,请使用会话参数值而不是本地

$('pre').snippetcache('session','java',{box:"1-2"});

demo

这个插件在iframe中作为tinyMCE非常有用。事实上,试试这个:

    ed.addButton('srccd', {
                         title: 'Source Code',
                         image: 'sourcecode.png',
                         onclick: function() {
                             ed.focus();   
                                //You should have an ID which is generated automatically     
                             var newSRCjq='<pre id="s1" class="highlight">'+ ed.selection.getContent() + '</pre>';
                             ed.selection.setContent(newSRCjq);

                       // iframe selected is the frame of TinyMCE  

                   $('iframe').contents.find('pre#s1').snippetcache('local','java',{box:"1-2"});




                 }
             });