冷月照霜城

憔悴江南倦客,不堪听、急管繁弦

博客园 首页 新随笔 联系 订阅 管理

FreeTextBox版本:1.6.3中文版(破宝汉化)

更新中……

1)FreeTextBox工具条MouseOver样式显示不正常

图标边框丢失,工具条有轻微闪动

          
             不正常,没有边框                                                      正常,有边框

在VS2005中,经过检查发现,是aspx文件中的这一句导致出现了问题:      

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

注释掉以后,一切恢复正常。

原因:DOCTYPE对于早期的CSS和JS有很大影响,由于用的是FTB 1.6.3 版,所以其中的好多JS和CSS的写法都不符合XHTML规范,所以导致这里出现问题。关于DOCTYPE的具体使用请参见“选择什么样的DOCTYPE”一文。

2)定制文件上传功能

在默认的布局中,即使选择EnableAll布局,也只有“插入图片(来自图片库)”这唯一一个和上传有关的按钮。如果是自用的话到是无所谓,但是如果是用在一个博客系统或是论坛系统中,有可能不希望用户通过这种方式操作,比如:
  • 为了安全只允许用URL贴图
  • 担心用户在图片库里粗心删除图片,导致先前发布的文章中出现图片丢失
  • 不想让用户看到太多的细节
在FTB源码项目中找到ToolbarControls目录下的ToolbarItems.cs文件,该文件定义了ToolbarItems类,通过使用该类的静态属性可获得相应的ToolbarButton对象或者ToobarDropDownList对象。仔细阅读后我们发现前面的“插入图片(来自图片库)”按钮是使用的InsertImageFromGallery属性。但是我们又发现了InsertImage这个属性,代码如下:

 1        /// <summary>
 2        /// Returns a ToolbarButton with InsertImage JavaScript functions builtin
 3        /// </summary>            

 4        public static ToolbarButton InsertImage {
 5            get {
 6                ToolbarButton button = new ToolbarButton("插入图片","insertimage","FTB_InsertImage");
 7                button.ScriptBlock = @"<script language=""JavaScript"">
 8                    function FTB_InsertImage(editor,htmlmode) {
 9                        if (htmlmode) return;
10                        editor.focus();
11                        editor.document.execCommand('insertimage',1,'');
12                    }
13                    </script>";
14                return button;
15            }

16        }

注意这一句:
editor.document.execCommand('insertimage',1,'');

它实际上是封装了DHTML中的document对象execCommand方法。

这个属性对应的按钮是被隐藏了,在三个布局中都没有,那我们把它加上,看看这个execCommand("insertimage",1"")运行的时候到底是什么样子。找到项目下的Support目录,找开目录下的ToolbarGenerator.cs文件。这个文件的作用是根据定义好的字符串创建FTB的工具栏,在文件的开始,我们找到了原始定义的三种布局字符串,现在就在Minimal布局中加入InsertImage按钮,代码如下:

public static string MinimalConfigString = "Bold,Italic,Underline,InsertImage";

要看效果先要建立一个可执行的项目调用FTB,因为FTB项目的类型是类库,无法直接调试。弄好后效果如下:



点击出现如下窗口



经过测试,这里可以直接输入图片的URL,也可以选择本地图片上传。但是后者我们切换到FTB的HTML模式下时,发现并没有上传图片,只是插入了物理路径。也就是说这个按钮是不支持上传的轻量级的选择。代码如下:

<P><IMG alt="" hspace=0 src="F:\552.jpg" align=baseline border=1></P>

上述的问题在于,它是一种绝对的物理路径,其原本指向的是我电脑中的F:\552.jpg这个图片;但是被发送到服务器端以后,别人浏览的时候程序会解释成是在服务器的F盘下的552.jpg ,问题是服务器上根本就没有这个文件,实际上并没上传,那么就会出现“白块红x”。那这个功能有什么用呢?这个我想应该还是在局域网内有效吧,比如有公共的第三方主机共享文件或是绝对的网络共享路径(如:src=\\ServerA\share\img\552.jpg),那么对于同一局域网的其它浏览者,网页中的图片路径应该是正常的。这一点没有测试,有兴趣的可以做一下。

待续……
posted on 2007-08-06 12:58  青弦  阅读(951)  评论(0编辑  收藏  举报