1

我发现一个关于 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 invoke ,我调用以下函数:

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

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

注意:我不会忘记为上面的插件导入所需的 JS 和 CSS

4

1 回答 1

0

一天之后:让我们介绍一下我的JQuery 编译器,它是一个基于jQuery Syntax Highlighter v2.0.0的编译器:

如何使用

代替 :

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

添加本地或会话参数:

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

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

但是,当你刷新页面时,Cache 会被移除。如果您想拥有一个有状态的编译器,请使用会话参数值而不是本地

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

演示

这个插件在 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"});




                 }
             });
于 2013-05-25T03:53:12.633 回答