FCKeditor代码语法高亮
第一,IE:1,遗留:隐藏的源代码和格式化的代码将是有问题的。
由于过去的研究中,两码可能是错的,主要是特殊的HTML代码,这样的代码在标签、Javascript代码ALT等。这里的解决方案很简单:只要更换它,但是在格式更换的注意。因为隐藏的代码也被取代,以置换后的最后一次,但相反的顺序,代码如下:
复制代码代码如下所示:
替换
替换
替换;
2、在fckeditor许多控件有右键菜单,可以修改其属性,代码是明亮的我还想加一!对fckeditor的官方网站,成功提高了,代码如下(代码在fckplugin js):
复制代码代码如下所示:
添加菜单
FCK.ContextMenu.RegisterListener({
把它放进小推车:功能(菜单,标签,标签名)
{
如果(!标签)
返回;
无功odiv =标签;
看看代码循环函数就知道了,为了选择高亮显示的代码顶层元素
而(odiv。parentNode){
如果(odiv.tagname = = usingtag odiv.classname = = usingflag)
打破;
odiv = odiv.parentnode;
}
在什么情况下我们显示/这个选项
如果(odiv.tagname = = usingtag odiv.classname = = usingflag)/(标签。_fckhighlighter)标签。parentelement _fckhighlighter | |)。
{
FCKSelection.SelectNode(odiv);
选项在显示时,显示分隔符的命令。
Menu.AddSeparator();
命令需要注册的命令/名称、上下文菜单的标题和图标路径。
Menu.AddItem('highlighter ',FCKLang ' } { 'dlgsyntaxhighlighterproperty,ohighlighteritem。iconpath);
}
} }
);
3,试用效果发现,只有双击代码行左键才能被修改,当双击被修改时,我不认为这是非常方便的。如果你双击代码就更方便了,嘿,答案是肯定的。前面的代码已经注册了div标签的双击事件。因此,我们可以注册格式化代码中使用的跨度和LI标记。代码如下。The code is fckplugin.js.
复制代码代码如下所示:
添加双击事件
FCK.RegisterDoubleClickHandler(fckhighlighter.ondoubleclick,usingtag); / /双击灰色栏
FCK.RegisterDoubleClickHandler(fckhighlighter。OnDoubleClick,'span '); / /双码
FCK.RegisterDoubleClickHandler(fckhighlighter。OnDoubleClick、李'); / /双空白区域代码
添加双击事件
FCK.RegisterDoubleClickHandler(fckhighlighter.ondoubleclick,usingtag); / /双击灰色栏
FCK.RegisterDoubleClickHandler(fckhighlighter。OnDoubleClick,'span '); / /双码
FCK.RegisterDoubleClickHandler(fckhighlighter。OnDoubleClick、李'); / /双空白区域代码
4,再试一次,找到双击可以在这里修改代码行数。但是双击代码不足以获得隐藏的源代码。原因是双击不是代码中的顶层元素。修改双击代码获得顶级元素可以很简单(代码放置在fckplugin js)。
复制代码代码如下所示:
双击事件处理代码
fckhighlighter.ondoubleclick =功能(DIV){
var div odiv =;
看看代码循环函数就知道了,为了选择高亮显示的代码顶层元素
而(odiv。parentNode){
如果(odiv.tagname = = usingtag odiv.classname = = usingflag)
打破;
odiv = odiv.parentnode;
}
如果(odiv.tagname = = usingtag odiv.classname = = usingflag){
FCKSelection.SelectNode(odiv);
fckcommands.getcommand('highlighter)执行();
}
}
5。当编辑转移到源代码,然后转身,发现高亮的代码不再被编辑。在研究中,发现用于身份识别的属性都没有,因为这个身份属性是一个非标准的HTML属性。这也不错,但类属性的顶层是不是有用的,它可以直接使用,这是简单的,我不给代码。
在伊江的修改完成了,它是完美的。
FF再次:
我使用的系统,使用该软件比较杂,有时使用FF,所以变化必须由FF的支持。此外,FCKeditor是IE和FF兼容,增加插件只支持IE有道理。
1,第一次尝试的效果:发现可以插入,但无法修改。双击也有效,但它不能修改。这是因为FF不同于IE浏览器,IE可以选择div标签直接和FF不能。所以我们需要添加一个点击事件,让代码帮助FF选择顶级元素,与原代码来自复制占位符插件FCKeditor(代码放置在fckplugin js)。
复制代码代码如下所示:
单击事件处理代码
FCKHighLighter。_clicklistener =功能(E)
{
无功odiv = e.target;
看看代码循环函数就知道了,为了选择高亮显示的代码顶层元素
而(odiv。parentNode){
如果(odiv.tagname = = usingtag odiv.classname = = usingflag)
打破;
odiv = odiv.parentnode;
}
如果(odiv.tagname = = usingtag odiv.classname = = usingflag)
FCKSelection.SelectNode(odiv);
}
FCKHighLighter。_setupclicklistener =函数(){
如果(fckbrowserinfo。isgecko)
FCK.EditorDocument.addEventListener(听到咔哒声,FCKHighLighter。_clicklistener,真的);
}
添加单击事件
FCK.Events.AttachEvent('onaftersethtml ',FCKHighLighter。_setupclicklistener);
添加菜单
FCK.ContextMenu.RegisterListener({
把它放进小推车:功能(菜单,标签,标签名)
{
如果(!标签)
返回;
无功odiv =标签;
看看代码循环函数就知道了,为了选择高亮显示的代码顶层元素
而(odiv。parentNode){
如果(odiv.tagname = = usingtag odiv.classname = = usingflag)
打破;
odiv = odiv.parentnode;
}
在什么情况下我们显示/这个选项
如果(odiv.tagname = = usingtag odiv.classname = = usingflag)/(标签。_fckhighlighter)标签。parentelement _fckhighlighter | |)。
{
FCKSelection.SelectNode(odiv);
选项在显示时,显示分隔符的命令。
Menu.AddSeparator();
命令需要注册的命令/名称、上下文菜单的标题和图标路径。
Menu.AddItem('highlighter ',FCKLang ' } { 'dlgsyntaxhighlighterproperty,ohighlighteritem。iconpath);
}
} }
);
注释:这需要修改FCKeditor核心代码,因为我发现2.5.1版本不能修改选定的元素在FF,但最新的2.6测试版是好的,所以我们需要在_source 内部修改getselectedelement功能 fckselection_gecko.js文件,并使用官方工具fckpackager.exe把Javascript代码。有时间我再写一遍。
这几乎是一样的。还有一些小问题。例如,代码可以直接修改(增加一个突出contenteditable = 'false'to标签)。JS代码兼容的父节点,并parentelement是没有用的。
最初,我想在添加代码的窗口中添加一个实时语法编辑器。但我在互联网上搜索了很多codepress和EditArea。有一些错误,特别是在IE7,所以暂时不加修改之后的一天。
添加这个插件比较容易。如果你有任何问题可以离开,我会尽力回答的。
下一步是添加fckeditor上传图片在线插件,使它更方便上传文章的地方。一旦你点击,你可以上传所有图像自动,哈哈哈。