亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > 軟件應用 > 正文

fckeditor 代碼語法高亮

2024-09-06 19:16:35
字體:
來源:轉載
供稿:網友
先是IE:
1、遺留的問題:隱藏的源碼和格式化后的代碼有會有問題。
經上次研究的結果,兩處的代碼有可能不對,主要是HTML的特別代碼,像代碼里有標簽<div>,JavaScript代碼里有&alt等。這里的解決方法很簡單:只要替換一下就可以了,不過要注意,在進行格式化之前就進行替換。因為隱藏的代碼也是要替換的,最后取的時候也要替換回去,但是要反順序。代碼如下:
復制代碼 代碼如下:

.replace(/&/g, "&amp;")
.replace(/</g, "&lt;")
.replace(/>/g,'&gt;');

2、在FCKeditor里很多控件都有右鍵菜單可以修改其屬性,代碼高亮我也想增加一個!到FCKeditor官方網站找了一遍成功的增加了,代碼如下(代碼放在fckplugin.js):
復制代碼 代碼如下:

// 添加右鍵菜單
FCK.ContextMenu.RegisterListener( {
AddItems : function( menu, tag, tagName )
{
if (!tag)
return;

var oDiv = tag;

// 循環的作用看一下代碼就知道了,是為了選擇高亮代碼的最頂層元素
while (oDiv.parentNode){
if (oDiv.tagName == usingTag && oDiv.className == usingFlag)
break;
oDiv = oDiv.parentNode;
}

// under what circumstances do we display this option
if ( oDiv.tagName == usingTag && oDiv.className == usingFlag )//&& (tag._FCKHighLighter || tag.parentElement._FCKHighLighter) )
{
FCKSelection.SelectNode( oDiv ) ;
// when the option is displayed, show a separator the command
menu.AddSeparator() ;
// the command needs the registered command name, the title for the context menu, and the icon path
menu.AddItem( 'HighLighter', FCKLang['DlgSyntaxHighLighterProperty'], oHighLighterItem.IconPath ) ;
}
}}
);

3、試用了一下效果,發現雙擊修改時只能雙擊代碼行數左邊的灰色才能彈出修改。我覺得不大方便,如果雙擊代碼處也可以彈出修改就方便多了!嘿嘿,答案是肯定的,之前的代碼已經注冊了DIV標簽的雙擊事件,所以再注冊一下格式化后的代碼用到的SPAN和LI標簽就可以了,代碼如下(代碼放在fckplugin.js):
復制代碼 代碼如下:

// 添加雙擊事件
FCK.RegisterDoubleClickHandler( FCKHighLighter.OnDoubleClick, usingTag ) ; // 雙擊灰色欄
FCK.RegisterDoubleClickHandler( FCKHighLighter.OnDoubleClick, 'SPAN' ) ; // 雙擊代碼
FCK.RegisterDoubleClickHandler( FCKHighLighter.OnDoubleClick, 'LI' ) ; // 雙擊代碼區空白
// 添加雙擊事件
FCK.RegisterDoubleClickHandler( FCKHighLighter.OnDoubleClick, usingTag ) ; // 雙擊灰色欄
FCK.RegisterDoubleClickHandler( FCKHighLighter.OnDoubleClick, 'SPAN' ) ; // 雙擊代碼
FCK.RegisterDoubleClickHandler( FCKHighLighter.OnDoubleClick, 'LI' ) ; // 雙擊代碼區空白

4、再試一下,發現雙擊代碼行數這里可以進行修改。但是雙擊代碼就不行,拿不到隱藏的源碼。原因是因為在代碼里雙擊的不是頂層元素,那簡單,修改一下雙擊的代碼,取得頂層元素就OK了(代碼放在fckplugin.js):
復制代碼 代碼如下:

/ /雙擊事件處理代碼
FCKHighLighter.OnDoubleClick = function( div ){
var oDiv = div;

// 循環的作用看一下代碼就知道了,是為了選擇高亮代碼的最頂層元素
while (oDiv.parentNode){
if (oDiv.tagName == usingTag && oDiv.className == usingFlag)
break;
oDiv = oDiv.parentNode;
}

if(oDiv.tagName == usingTag && oDiv.className == usingFlag) {
FCKSelection.SelectNode( oDiv ) ;
FCKCommands.GetCommand( 'HighLighter' ).Execute() ;
}
}

5、把編輯轉到源代碼再轉回來的時候發現高亮的代碼已經不可以編輯了。研究之下發現是用于標識的屬性沒有了,因為這個標識的屬性是非標準的HTML屬性。這個也好辦,反正頂層的class屬性沒用,就直接拿來用就可以了。這個簡單,我就不給代碼了。
IE里的修改算是完成了,而且比較完美。
再來FF:
  本人用系統,用軟件都用得比較雜,有時候會用用FF,所以修改的東西一定要支持FF。再說,FCKeditor本身是兼容IE和FF的,增加的插件只支持IE有點說不過去。
1、首先試用了一下效果:發現已經可以插入,不過不可以修改。雙擊事件也有效,但也是不能修改。這個原因是因為FF跟IE不同,IE里可以把DIV標簽直接選擇,FF里不可以。所以要加一個單擊的事件,讓代碼幫助FF選擇頂層元素,原始代碼是從FCKeditor的Placeholder插件里COPY過來的(代碼放在fckplugin.js):
復制代碼 代碼如下:

// 單擊事件處理代碼
FCKHighLighter._ClickListener = function( e )
{
var oDiv = e.target;

// 循環的作用看一下代碼就知道了,是為了選擇高亮代碼的最頂層元素
while (oDiv.parentNode){
if (oDiv.tagName == usingTag && oDiv.className == usingFlag)
break;
oDiv = oDiv.parentNode;
}

if ( oDiv.tagName == usingTag && oDiv.className == usingFlag )
FCKSelection.SelectNode( oDiv ) ;
}

FCKHighLighter._SetupClickListener = function (){
if (FCKBrowserInfo.IsGecko)
FCK.EditorDocument.addEventListener( 'click', FCKHighLighter._ClickListener, true ) ;
}

// 添加單擊事件
FCK.Events.AttachEvent( 'OnAfterSetHTML', FCKHighLighter._SetupClickListener ) ;

// 添加右鍵菜單
FCK.ContextMenu.RegisterListener( {
AddItems : function( menu, tag, tagName )
{
if (!tag)
return;

var oDiv = tag;

// 循環的作用看一下代碼就知道了,是為了選擇高亮代碼的最頂層元素
while (oDiv.parentNode){
if (oDiv.tagName == usingTag && oDiv.className == usingFlag)
break;
oDiv = oDiv.parentNode;
}

// under what circumstances do we display this option
if ( oDiv.tagName == usingTag && oDiv.className == usingFlag )//&& (tag._FCKHighLighter || tag.parentElement._FCKHighLighter) )
{
FCKSelection.SelectNode( oDiv ) ;
// when the option is displayed, show a separator the command
menu.AddSeparator() ;
// the command needs the registered command name, the title for the context menu, and the icon path
menu.AddItem( 'HighLighter', FCKLang['DlgSyntaxHighLighterProperty'], oHighLighterItem.IconPath ) ;
}
}}
);

注明:這個需要修改FCKeditor的核心代碼,因為我發現在2.5.1版本在FF下不可以修改選擇的元素,但是最新的2.6測試版就可以。所以需要修改_source/internals/fckselection_gecko.js文件里的GetSelectedElement函數,并且使用官方工具fckpackager.exe重新打包JavaScript代碼,這個我有空再寫一下。
  到這里已經差不多了,其中還有一些小問題沒有說,例如:高亮的代碼里可以直接修改(為標簽增加一個contentEditable='false'就完了),JS代碼兼容要使用parentNode不要使用parentElement等。
  本來想在添加代碼的窗口也增加一個實時語法高亮的編輯器,不過上網找了一下用得比較多的CodePress和EditArea都存在一些BUG,特別是在IE7下,所以還是暫時不添加了。日后再修改。
  增加這個插件修改的容易比較多,如果你遇到什么問題可以留言,我會盡力為你解答。
  下一步再為FCKeditor增加一個在線上傳圖片的插件,這樣在別處轉載文章時就方便多了,點一下就可以自動上傳所有圖片,哈哈哈。。。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美性xxxx极品高清hd直播| 久久久成人精品视频| 亚洲新中文字幕| 亚洲欧美日韩中文在线| 精品少妇一区二区30p| 欧美激情精品久久久久久| 久久久噜噜噜久久中文字免| 97涩涩爰在线观看亚洲| 亚洲一区二区在线| 91精品国产91久久久| 久久福利视频导航| 亚洲欧美日韩爽爽影院| 成人a级免费视频| 亚洲精品视频播放| 日韩精品中文字幕在线观看| 亚洲国产精品免费| 亚洲精品国产成人| 欧美成人国产va精品日本一级| 在线精品播放av| 国产日韩精品电影| 久久综合伊人77777尤物| 亚洲一区二区在线播放| 亚洲日本欧美中文幕| 亚洲电影av在线| 国产精品ⅴa在线观看h| 国产免费一区二区三区香蕉精| 国产精品美女呻吟| 91国产精品视频在线| 亚洲嫩模很污视频| 久久成人精品电影| 日日摸夜夜添一区| 亚洲一区二区三区xxx视频| 国产精品毛片a∨一区二区三区|国| 久久久久一本一区二区青青蜜月| 亚洲综合日韩中文字幕v在线| 久久九九国产精品怡红院| 国产精品国产三级国产aⅴ浪潮| 亚洲第一视频在线观看| 色99之美女主播在线视频| 91免费版网站入口| 精品高清一区二区三区| 日韩中文字幕在线看| 国产va免费精品高清在线观看| 成人做爽爽免费视频| 日韩av免费一区| 亚洲视频自拍偷拍| 亚洲欧美国产va在线影院| 久久久久久久亚洲精品| 亚洲国产精品va在线观看黑人| 亚洲高清一二三区| 色偷偷噜噜噜亚洲男人| 日韩在线一区二区三区免费视频| 尤物九九久久国产精品的分类| 欧美xxxx14xxxxx性爽| 成人亚洲综合色就1024| 综合av色偷偷网| 国语自产精品视频在线看抢先版图片| 欧美黑人巨大xxx极品| 欧美高清视频免费观看| 亚洲va国产va天堂va久久| 91精品视频专区| 国产精品毛片a∨一区二区三区|国| 国产91热爆ts人妖在线| 亚洲影影院av| 亚洲黄一区二区| 欧美一级淫片aaaaaaa视频| 欧美制服第一页| 欧美一区二粉嫩精品国产一线天| 亚洲欧洲xxxx| 欧美日韩中文在线| 日韩中文字幕在线免费观看| 日韩毛片中文字幕| 成人免费看片视频| 久久国产精品影片| 中文字幕欧美亚洲| 国产成人一区二区三区| 亚洲欧美制服另类日韩| 91免费看国产| 亚洲人成在线播放| 久久久女女女女999久久| 91精品国产综合久久香蕉最新版| 在线观看久久久久久| 最近2019年中文视频免费在线观看| 精品久久在线播放| 欧美日韩综合视频网址| 欧美激情一二区| 久久久国产视频| 992tv在线成人免费观看| 色综合久久久久久中文网| 成人亚洲欧美一区二区三区| 久久视频在线观看免费| 亚洲系列中文字幕| 欧美大片免费观看| 成人网在线免费看| 欧美一区二区.| 久久av资源网站| 91精品久久久久久久久青青| 精品久久久久人成| 亚洲人成网7777777国产| 亚洲免费福利视频| 日韩在线观看网站| 国产精品欧美激情在线播放| 成人h猎奇视频网站| 国产成人精彩在线视频九色| 国产成人精品免高潮费视频| 日韩视频―中文字幕| 久久夜色精品国产亚洲aⅴ| 久久国产一区二区三区| 久久福利视频导航| 黑人巨大精品欧美一区二区免费| 国产精品视频xxx| 视频直播国产精品| 一区二区中文字幕| 国内精品小视频在线观看| 色老头一区二区三区在线观看| 欧美性在线观看| 91av在线免费观看视频| 亚洲三级免费看| 成人激情视频免费在线| 亚洲欧美日韩国产成人| 欧美大全免费观看电视剧大泉洋| 这里只有精品丝袜| 国产一区二区三区在线免费观看| 亚洲女同性videos| 久久全国免费视频| www.日韩av.com| 亚洲第一视频在线观看| 亚洲黄色成人网| 中文字幕亚洲无线码在线一区| 国产中文欧美精品| 136fldh精品导航福利| 国产精品美女久久久久av超清| 成人有码在线播放| 精品美女久久久久久免费| 97久久久免费福利网址| 欧美午夜xxx| 亚洲国产一区自拍| 国产精品扒开腿做爽爽爽的视频| 欧美成人精品三级在线观看| 91午夜理伦私人影院| 欧美性猛交xxxx| 一区二区三区动漫| 久久天天躁狠狠躁夜夜躁2014| 精品国产一区二区三区久久| 亚洲欧美日韩天堂| 国产精品久久电影观看| 国产精品女人网站| 亚洲国产精品久久久| 欧美噜噜久久久xxx| 欧美亚洲另类在线| 国产视频久久久久久久| 国产九九精品视频| 国语自产偷拍精品视频偷| 国产精品丝袜白浆摸在线| 久久伊人91精品综合网站| 国产精品爱久久久久久久| 亚洲国产精品99| 日韩高清a**址| 另类色图亚洲色图| 91精品国产高清自在线| 亚洲国内精品在线| 亚洲欧洲一区二区三区久久| 91大神在线播放精品| 高潮白浆女日韩av免费看|