分类: Blog修改预览模式: 普通 | 列表

刚发现一个问题,可能是因为IE8吧。

因为IE8打开博客后左边的日历和用户面板显示错位,所以用了兼容格式显示。然后发表一个日志,真是M$,竟然在FCKeditor下出了问题。

我也没有详细试,刚已经把我气火了,辛辛苦苦打了N久的日志一个字都没有了。只有标题存在,貌似只有FCKeditor的内容没有提交上去。

唉,没有办法,只有硬着头皮重装再打,我打我打我打打打。。。

分类:Blog修改 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 728

修复列表问题

之前都说过了,是因为新加的功能造成的冲突。现在只要来修改一下新增加的CSS就可以了。

需要修改的文件是Dphighlighter.css,在FCKeditor\editor\css目录下。

只需要把正面的代码注释掉就OK了,简单吧?

CSS代码
  1. /* 小冬修改,修复列表无效 
  2.  .Content-body li { 
  3.  list-style:disc 
  4.  } 
  5. */  

新增加的引用和代码功能在FCKeditor下并不是所见即所得,感觉总不爽。哈哈,期待吧。。有空改成所见即所得的。

Tags: Blog JavaScript CSS

分类:Blog修改 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 600

最新版本的BUG

    这个版本看来也有些BUG,就连FCKeditor自带的列表也无效了。应该是那个“引用”和“代码”的CSS问题,有空修改一下就好了。

Tags: Blog ASP FCKEditor JavaScript

分类:Blog修改 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 645

把Blog升级到3.0.6.170

    这次升级比较彻底!并没有使用升级包,而是直接使用完整安装包。

    升级方法如下:

  1. 先在本地完成装最新版本PJBlog。
  2. 下载旧Blog数据库,还有所有附件(就是attachments目录)。
  3. 手工修改数据库,把数据库升级到3版本。
  4. 把之前旧版本修改过的文件作相应的修改。
  5. 哈哈,大功告成!!上传到空间去。。
  6. 更新Blog缓存。

    这次升级过程中遇到几个问题:

  1. 第一次手工升级数据库后Blog运行不正常。最终才查到是blog_Info表里的blog_postFile字段由“是/否”类型转到“数字”类型。
  2. FCKeditor高亮插件运行不正常,在编辑状态下可以显示行数,可是最终页面却没有了行数。经过几番波折才查到是最新的“引用”和“代码”功能的CSS有冲突,最后修改高亮插件的CSS解决。
  3. 默认并没有把“代码”功能放出来,顺便放出来。不过应该少用,一般都用高亮插件。

 

Tags: Blog ASP FCKEditor JavaScript

分类:Blog修改 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 603

代码语法高亮在FCKeditor2.6.3上的问题

    这两天试升级Blog就这问题最麻烦了,试了一整晚都没有结果。

    一直报错,用FireBug调试显示第一行?/*语法错误。

    于是昨晚又搞了一下,最后才发现是我的编辑器的问题。因为我习惯使用TC作文件管理器,并且使用SynPlus插件编辑文件。这个编辑器对UTF-8格式和Unicode格式的支持有点问题。经常都把文件头识别错,会在前面多加一个“?”。

查看更多...

Tags: Blog FCKEditor 语法高亮 JavaScript

分类:Blog修改 | 固定链接 | 评论: 1 | 引用: 0 | 查看次数: 696

准备把Blog升级到2.8.5.157版本

    因为之前对Blog的修改也不少,这次升级也比较麻烦。国庆抽了个晚上修改也没有完全改好。

    大部分修改都已经完成,UBB代码行数还是不行。

    2.8.5版本把FCKeditor升级到2.6.3,先前增加的代码语法高亮也出问题了,得找个时间重新修改一下代码。

查看更多...

Tags: Blog ASP 语法高亮 FCKEditor

分类:Blog修改 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 471

DOM示例3

    之前学习DOM的时候写的示例,已经发现了两个,现在把第三个也发布出来吧。主要是增加了鼠标操作,可以在DIV标签点击进行编辑。

 

 
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  2. <HTML>
  3.  <HEAD>
  4.   <TITLE> DOMDocument 对象示例3 </TITLE>
  5. <STYLE type="text/css">
  6. <!--
  7. .JobFlow {
  8.     width: 102px;
  9.     position: relative;
  10.     background-color: #00CCFF;
  11.     padding: 1px;
  12.     float: left;
  13. }
  14. .JobStep {
  15.     background-color: #00FF99;
  16.     height: 100px;
  17.     width: 100px;
  18.     margin: 1px;
  19. }
  20. .EditDiv {
  21.     cursor: hand;
  22.     background-color: #00CCFF;
  23.     width: 100%;
  24.     height: 20;
  25. }
  26. .EditText {
  27.     width: 100px;
  28.     height: 18;
  29. }
  30. -->
  31. </STYLE>
  32. <SCRIPT language="javascript">
  33.   <!--
  34.     // XML 原形
  35.     var str = "<?xml version='1.0'?><TS>" +
  36.         "<TT><TD>Kend</TD><TD>Programmer</TD></TT>" +
  37.         "<TT><TD>小明</TD><TD>技术员</TD></TT></TS>";
  38.     // 创建DOM对象并加载XML
  39.     var dom = new ActiveXObject("MSXML2.DOMDocument");
  40.     dom.loadXML(str);
  41.     // 获取DOM里顶层数据行数
  42.     var cols = dom.getElementsByTagName("TT").length;
  43.  
  44.     // 动态产生表格并显示
  45.     function makeTable(){
  46.         var html = "";
  47.         // 获取DOM里顶层数据列表
  48.         var TTs = dom.getElementsByTagName("TT");
  49.         for (var i=0; i<TTs.length; i++)
  50.         {
  51.             // 获取DOM里第二层数据列表
  52.             var TDs = TTs.item(i).getElementsByTagName("TD");
  53.             html += "<div class=\"JobFlow\">";
  54.             html += "<div class=\"JobTitle\">Job_" + i + "</div>";
  55.             for (var j=0; j<TDs.length; j++)
  56.             {
  57.                 html += "<div class=\"JobStep\">" +
  58.                         "<div class=\"EditDiv\" OnClick=\"editText(" + i + "," + j + ", this);\">" + TDs[j].text + "</div>" +
  59. //                      "<input size='10' type='text' onChange='saveValue(" + i + "," + j + ", this.value);' value='" + TDs[j].text + "' />" + 
  60.                         "<BR />ROW:" + i + "|COL" + j +
  61.                         "|<a href='JavaScript:insertAt(" + i + "," + j + ");'>Ins</a></div>";
  62.             }
  63.             html += "<div><a href='JavaScript:insertAt(" + i + "," + j + ");'>Append</a></div>";
  64.             html += "</div>";
  65.         }
  66.         // 显示XML代码
  67.         document.getElementById("src").innerHTML = "<textarea style='width:100%; height=100;'>" + dom.xml + "</textarea>";
  68.         // 显示HTML代码
  69.         document.getElementById("htmlsrc").innerHTML = "<textarea style='width:100%; height=100;'>" + html + "</textarea>";
  70.         // 显示表格
  71.         document.getElementById("tt").innerHTML = html;
  72.     }
  73.  
  74.     // 创建一个顶层数据
  75.     function makeCol() {
  76.         var TT = dom.createElement("TT");
  77.         var TD1 = dom.createElement("TD");
  78.         TD1.text = cols;
  79.         TT.appendChild(TD1);
  80.         return TT;
  81.     }
  82.  
  83.     // 创建一个第二层数据
  84.     function makeNode() {
  85.         var TD = dom.createElement("TD");
  86.         TD.text = cols;
  87.         return TD;
  88.     }
  89.  
  90.     // 创建一个顶层数据并加到表格最后
  91.     function appendCol() {
  92.         cols++;
  93.         var TS = dom.getElementsByTagName("TS").item(0);
  94.         TS.appendChild(makeCol());
  95.         makeTable();
  96.     }
  97.  
  98.     // 创建一个顶层数据并插入到表格相应地方
  99.     function insertAt(x, y) {
  100.         cols++;
  101.         var TTs = dom.getElementsByTagName("TT");
  102.         var TT = TTs.item(x);
  103.         TT.insertBefore(makeNode(), TT.childNodes[y]);
  104.         makeTable();
  105.     }
  106.  
  107.     // 处理编辑框Enter键和Escape键
  108.     function editKeyPress(e, x, y, edit){
  109.         if (e.keyCode == 13) {  // Enter
  110.             saveValue(x, y, edit);
  111.             resetEdit(x, y, edit);
  112.         }
  113.         if (e.keyCode == 27)    // Escape
  114.             resetEdit(x, y, edit);
  115.  
  116.     }
  117.  
  118.     // 保存表格上修改的数据
  119.     function saveValue(x, y, edit) {
  120.         if (x<0||y<0)
  121.             return;
  122.         var TTs = dom.getElementsByTagName("TT");
  123.         if (x>=TTs.length)
  124.             return;
  125.         if (y>=TTs.item(x).childNodes.length)
  126.             return;
  127.         TTs.item(x).childNodes[y].text = edit.value;
  128.  
  129.         // 显示XML代码
  130.         document.getElementById("src").innerHTML = "<textarea style='width:100%; height=100;'>" + dom.xml + "</textarea>";
  131.     }
  132.     
  133.     // 重置div
  134.     function resetEdit(x, y, edit){
  135.         var tmpDiv = document.createElement("DIV");
  136.         tmpDiv.className = "EditDiv";
  137.         tmpDiv.onclick = "editText(" + x + "," + y + ", this);";
  138.         tmpDiv.innerHTML = edit.value;
  139.         edit.parentNode.outerHTML = tmpDiv.outerHTML;
  140.     }
  141.  
  142.     // 动态编辑数据
  143.     function editText(x, y, div) {
  144.         if (x<0||y<0)
  145.             return;
  146.         var TTs = dom.getElementsByTagName("TT");
  147.         if (x>=TTs.length)
  148.             return;
  149.         if (y>=TTs.item(x).childNodes.length)
  150.             return;
  151.  
  152.         var editBox = document.createElement("input");
  153.         editBox.type = "text";
  154.         editBox.className = "EditText";
  155.         editBox.value = TTs.item(x).childNodes[y].text;
  156.  
  157.         editBox.onchange = "saveValue(" + x + ", " + y + ", this);";
  158.         editBox.onblur = "resetEdit(" + x + ", " + y + ", this);";
  159.         editBox.onkeypress = "editKeyPress(event, " + x + ", " + y + ", this);";
  160.  
  161.         div.className = "";
  162.         div.onclick = "";
  163.         div.innerHTML = editBox.outerHTML;
  164.         div.childNodes[0].focus();
  165.     }
  166.   -->
  167.   </SCRIPT>
  168.  </HEAD>
  169.  
  170.  <BODY>
  171.   <DIV style="height:30;">This page demo3 how to using DOMDocument</DIV>
  172.   <DIV style="height:30;">This demo for Job flow in an ERP project</DIV>
  173.   <TABLE border="1" align="center"><TR><TD>
  174.     <DIV id="tt" style="border:1; background-color:#00ccee;;">Dynamic Face</DIV>
  175.   </TD></TR></TABLE>
  176.   <DIV>XML Data</DIV>
  177.   <DIV id="src" style="width:100%;"></DIV>
  178.   <DIV>HTML source</DIV>
  179.   <DIV id="htmlsrc" style="width:100%;"></DIV>
  180.   <INPUT type="button" onClick="makeTable()" value="Make Table" /><INPUT type="button" onClick="appendCol()" value="Append Col" />
  181.   <INPUT name="textfield" type="text" id="textfield" onKeyPress="editKeyPress(event, 2, 3, this)">
  182. </BODY>
  183. </HTML>

 

Tags: JavaScript Ajax DOM 对象模型

分类:Blog修改 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 379

发布FCKeditor语法高亮插件

    语法高亮的插件已经使用一段时间了,感觉没什么大问题。现在也有网友问我什么时候可以下载,今天有点空,就把它打包放上来了。 

使用方法:
1、在您的FCKeditor的配置文件中(一般为fckconfig.js或custom.config.js)
配置其中的FCKConfig.ToolbarSets,添加HighLighter。
如:
    FCKConfig.ToolbarSets["review"] = [
        ['HighLighter','Bold','Italic','Underline','StrikeThrough','Link','Unlink','Image','Rule','Smiley','TextColor','BGColor']
    ];
当然,你可以放到别的工具栏,不过记得注意大小写。
 
2、根据你指定的plugin目录,注册plugin
如:
    // 代码语法高亮插件
    FCKConfig.Plugins.Add( 'highlighter', 'zh-cn,en' ) ;

3、OK,你会发现你的FCK工具栏的图片多了一个带有"ab"字母,黄底的图标。你就可以使用语法高亮显示功能了。

点击下载语法高亮的插件

Tags: FCKEditor 语法高亮 JavaScript DOM 对象模型 BOM 浏览器对象模型

分类:Blog修改 | 固定链接 | 评论: 7 | 引用: 0 | 查看次数: 1941

JavaScript,真的是不错的脚本!

    这段时间看的<<JavaScript高级编程>>已经接近尾声了。我以前也搞过网页(用ASP比较多,当时ASP很火),写过网页脚本(JavaScript和VBScript都有写,不过还是以JavaScript为主),都是基于IE下的开发。有时需求也比较特殊,也经常要上网找资料。不过这次看这本书也学到了不少的新知识,对JavaScript有了较全面的了解和认识。

    前面说的JavaScript特殊语法http://myvnet.com/article.asp?id=44在这本书后面也有提到,不过只是当作优化的一种方式简单说了一下。ayeah网友也给我说了一下这语法叫JSON,其实它是ECMAScript 3rd的一个子集。目的是创建一种利于人类阅读也利于计算机解释的语法。

 
  1. // JSON语法与传统ECMAScript语法简单比较
  2.  
  3. // 创建数组
  4. // ECMAScript
  5. var array = new Array;
  6. array = ["Kend""http://MyvNet.com"];
  7.  
  8. // JSON
  9. var array = [];
  10. array = ["Kend""http://MyvNet.com"];
  11.  
  12. // 创建对象
  13. // ECMAScript
  14. var objMyvNet = new Object;
  15. objMyvNet.author = "Kend";
  16. objMyvNet.url = "http://MyvNet.com";
  17. objMyvNet.goHomePage = function() { top.location.href = this.url; };
  18.  
  19. // JSON
  20. var objMyvNet = {
  21.     author: "Kend";
  22.     url: "http://MyvNet.com";
  23.     goHomePage: function() { top.location.href = this.url; };
  24. };

  可以看到JSON语法比传统的语法直观多了,也节省了很多空间。.js文件少点,下载的速度就可以快点。

Tags: JavaScript Ajax DOM 对象模型 BOM 浏览器对象模型

分类:Blog修改 | 固定链接 | 评论: 0 | 引用: 0 | 查看次数: 464

再次修改FCKeditor

    这几天帖代码的时候发现先前添加的语法高亮插件在输入代码时不能输入TAB键, 今天抽个时间改了一下代码, 其实也比较简单, 就是处理一下onkeydown事件就可以了.

 
  1. function codingKeyDown( event, obj ) {
  2.     // Process Tab key
  3.     var tabKeyCode = 9;
  4.  
  5.     var keycode = event.keyCode;
  6.     if (keycode == tabKeyCode) {
  7.         if (obj.setSelectionRange) {
  8.             // mozilla
  9.             var s = obj.selectionStart;
  10.             var e = obj.selectionEnd;
  11.             obj.value = obj.value.substring(0, s) + "\t" + obj.value.substr(e);
  12.             obj.setSelectionRange(s + 1, s + 1);
  13.             obj.focus();
  14.         } else if (obj.createTextRange) {
  15.             // ie
  16.             document.selection.createRange().text="\t"
  17.             event.returnValue = false;
  18.         } else {
  19.             // unsupported browsers
  20.         }
  21.  
  22.         if (event.preventDefault) // dom
  23.         event.preventDefault();
  24.         return false// should work in all browsers
  25.     }
  26.  
  27.     // Process Ctrl+A key for select all code
  28.     if ( event.ctrlKey && event.keyCode == 65 || event.keyCode == 97 ) {
  29.         document.getElementById("code").select();
  30.         return;
  31.     }
  32. }

 

Tags: Blog FCKEditor 语法高亮 JavaScript 浏览器对象模型

分类:Blog修改 | 固定链接 | 评论: 3 | 引用: 0 | 查看次数: 891