fck编辑器的使用(经典)_第1页
fck编辑器的使用(经典)_第2页
fck编辑器的使用(经典)_第3页
fck编辑器的使用(经典)_第4页
fck编辑器的使用(经典)_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Fck编辑器的使用(经典)首先,FCKEDITOR勺性能是非常好的,用户只需很少的时间就可以 载入FCKEDITOR所需文件.对于其他在线编辑器来说,这几乎是 个很难解决的难题 , 因为在开启编辑器时需要装载太多的文件 . 比如CUTEEDITORI然功能比FCKEDITORS要强大,可是,它本 身也够庞大了,至于FREETEXTBOX,其易用性与FCKEDITO相比, 尚有差距,可以 说,FCKEDITORI一个别具匠心的在线编辑器,它 里面融入了作者高深的面向对象的JAVASCRIPT功力,集易用性与强大的功能与一体 . 与编辑器相关的所有图像 , 脚本以及调用页. 语言文件. 编辑器的皮

2、肤文件. 工具样的贴图等 这些将导致在服务器和客户端间产生相当的流量 . 如果有许多文 件被调用 , 那么即便每个文件很小 . 也会让用户等得不耐烦 . 装载顺序从 2.0 版开始 , 编辑器按以下步骤装载资源 :.基本页(就是编辑器所在页)以及装入编辑器的JS脚本. 用来建立编辑器的脚本. 编辑器的语言和皮肤 . 建立编辑器 . 载入预置的编辑文档内容 . 从现在开始 , 用户可以阅读和编辑文档了 , 不过 , 拖拽支持以及 工具栏都是不可用的. 载入编辑器引擎脚本. 建立工具栏 , 并且可用. 从现在开始 , 编辑器的所有功能都已经完整. 载入工具栏图标脚本压缩在打包任何新版本时 , 编辑

3、器的 JS 脚本将会进行预处理 . 预处理 步骤如下 :. 移除所有代码注释. 移除所有无用的空白字符 . 将脚本合并成几个文件使用上面的方法 , 我们可以将脚本文件的大小压缩到原来的 50%. 压缩后 , 原始的代码仍然存在于一个名为 _Source 的文件夹中 如何打包 ?编辑器已经自带了打包程序,它位于FCKEDITOR的根文件夹中_PACKAGE文件夹中,名为 Fckeditor.Packager.exe,将其复制到FCKEDITO根文件夹中并运行,即可自动将JS脚本打包并压缩 需要注意的是该程序是一个.NET程序,必须安装.NET FRAMEWORK 才能使用想要获取支持 ?如果你捐

4、赠 15000欧元, 你就可以获得 1年的免费技术支持 (比较 贵的说 , 相当于人民币 15万,不过西欧的费用相当惊人 ) 如何安装 ?1. 下载最新版的 FCKEDITOR2. 解压缩到你的站点根文件夹中名为FCKEDIT0啲文件夹中(名称必须为FCKEDITOR因为配置文件中已经使用此名称来标示出FCKEDITOR勺位置)3. 现在,编辑器就可以使用了 , 如果想要查看演示 , 可以按下面方 法访问 :http:/FCKeditor/_samples/default.html注意:你可以将FCKEDITOI放置到任何文件夹,默认情况下,将其 放入到FCKEDITOI文件夹是最为简单的方法

5、.如果你放入的文件 夹使用别的名称 , 请修改配置文件夹中编辑器 BasePath 参数, 如 下所示 :oFckeditor.BasePath=/Components/fckeditor/;另外,FCKEDITOI文件夹中所有以下划线开头的文件夹及文件,都是可选的 , 可以安全的从你的发布中删除 . 它们并不是编辑器运 行时必需的如何将FCKEDITO整合进我的页面?由于目前的版本提供的 FCKEDITOF仅提供了 JAVASCRIP式的整 合,因此,这里仅讲述如何应用 JAVASCRIP俅整合FCKEDITO到 站点中 , 当然, 其他各种语言的整合 , 你可以参考 _samples 文件

6、夹 中的例子来完成1, 假如编辑器已经安装在你的站点的 /FCKEDITOR文件夹下.那 么,第一步我们需要做的就是在页面的 HEAD段中放入SCRIPT标 记以引入JAVASCRIPT合模块.例如:其中路径是可更改的2, 现在,FCKEDITOF类已经可以使用了 .有两个方法在页面中建立一个FCKEDITO编辑器:方法1:内联方式(建议使用):在页面的FORM标记内需要插入编 辑器的地方置入以下代码 :script type=text/javascriptvar oFCKeditor = new FCKeditor( FCKeditor1 ) ;oFCKeditor.Create() ;方法

7、2:TEXTAREA标记替换法(不建议使用):在页面的ONLOA事件中,添加以下代码以替换一个已经存在的TEXTARE标记 window.onload = function() var oFCKeditor = new FCKeditor( MyTextarea ) ; oFCKeditor.ReplaceTextarea() ; This is the initial value.3. 现在, 编辑器可以使用了FCKEDITOR类参考:下面是用来在页面中建立编辑器的FCKEDITOR类的说明构造器 :FCKeditor( instanceName, width, height, toolba

8、rSet, value )instanceName: 编辑器的唯一名称 ( 相当于 ID)WIDT H宽度HEIGHT高度toolbarSet: 工具条集合的名称 value: 编辑器初始化内容 属性:instanceName: 编辑器实例名 width: 宽度, 默认值为 100% height: 高度 , 默认值是 200ToolbarSet:工具集名称,参考FCKCONFIG JS默认值是 Default value:初始化编辑器的HTML弋码,默认值为空BasePath: 编辑器的基路径 , 默认为 /Fckeditor/ 文件夹 , 注意, 尽 量不要使用相对路径 . 最好能用相对于

9、站点根路径的表示方法 , 要以 /结尾CheckBrowser: 是否在显示编辑器前检查浏览器兼容性 , 默认为trueDisplayErrors: 是否显示提示错误 , 默为 true; 集合:ConfigKey=value;这个集合用于更改配置中某一项的值 , 如 oFckeditor.ConfigDefaultLanguage=pt-br;方法:Create()建立并输出编辑器RepaceTextArea(TextAreaName) 用编辑器来替换对应的文本框 如何配置 FCKEDITOR?FCKEDITO提供了一套用于定制其外观,特性及行为的设置集.主 配置文件名为 Fckconfig

10、.js 你既可以编辑主配置文件 , 也可以自己定义单独的配置文件 . 配 置文件使用JAVASCRIPT语法.修改后 , 在建立编辑器时 ,可以使用以下语法 : var oFCKeditor = new FCKeditor( FCKeditor1 ) ; oFCKeditor.ConfigCustomConfigurationsPath /myconfig.js ;oFCKeditor.Create() ;提醒:当你修改配置后 , 请清空浏览器缓存以查看效果 配置选项 :AutoDetectLanguage=true/false自动检测语言BaseHref= _fcksavedurl=相对链接

11、的基地址ContentLangDirection=ltr/rtl默认文字方向ContextMenu=字符串数组,右键菜单的内容CustomConfigurationsPath= 自定义配置文件路径和名称 Debug=true/false 是 否 开 启 调 试 功 能 , 这 样 , 当 调 用 FCKDebug.Output() 时, 会在调试窗中输出内容 DefaultLanguage= 缺省语言EditorAreaCss= 编辑区的样式表文件EnableSourceXHTML=true/false 为 TRUE时,当由可视化界面切换到代码页时,把HTML处理成XHTMLEnableXHT

12、ML=true/false 是否允许使用 XHTMI取代 HTMLFillEmptyBlocks=true/false元素用空格来替代使用这个功能 , 可以将空的块级FontColors= 设置显示颜色拾取器时文字颜色列表FontFormats= 设置显示在文字格式列表中的命名FontNames= 字体列表中的字体名FontSizes= 字体大小中的字号列表ForcePasteAsPlainText=true/false 强制粘贴为纯文本ForceSimpleAmpersand=true/false是否不把 &符号转换为 XML实体FormatIndentator= 当在源码格式下缩进代码使用

13、的字符FormatOutput=true/false 当输出内容时是否自动格式化代码FormatSource=true/false 在切换到代码视图时是否自动格式 化代码FullPage=true/false 是否允许编辑整个 HTML文件,还是仅允 许编辑BODY可的内容GeckoUseSPAN=true/false 是否允许 SPAN标记代替 B,I,U 标记IeSpellDownloadUrl= 下载拼写检查器的网址ImageBrowser=true/false 是否允许浏览服务器功能ImageBrowserURL= 浏览服务器时运行的 URLImageBrowserWindowHeig

14、ht= 图像浏览器窗口高度LinkBrowser=true/false是否允许在插入链接时浏览服务器ImageBrowserWindowWidth= 图像浏览器窗口宽度LinkBrowserURL= 插入链接时浏览服务器的 URLLinkBrowserWindowHeight= 链接目标浏览器窗口高度LinkBrowserWindowWidth= 链接目标浏览器窗口宽度Plugins=object 注册插件PluginsPath= 插件文件夹ShowBorders=true/false 合并边框SkinPath= 皮肤文件夹位置SmileyColumns=12 图符窗列数SmileyImage

15、s= 字符数组 图符窗中图片文件名数组SmileyPath= 图符文件夹路径SmileyWindowHeight 图符窗口高度SmileyWindowWidth 图符窗口宽度SpellChecker=ieSpell/Spellerpages 设置拼写检查器StartupFocus=true/false 开启时 FOCU到编辑器 StylesXmlPath=设置定义CSS羊式列表的XML文件的位置TabSpaces=4 TAB键产生的空格字符数ToolBarCanCollapse=true/false 是否允许展开 /折叠工具栏 ToolbarSets=object允许使用 TOOLBA集合To

16、olbarStartExpanded=true/false开启是 TOOLBA是否展开UseBROnCarriageReturn=true/false 当回车时是产生 BR 标记 还是P或者DIV标记 如何自定义羊式列表呢 ?FCKEDITOR的样式工具栏中提供了预定义的样式,样式是通过XML文件定义的,默认的XML样式文件存在于 FCkEditor根文件 夹下的 FckStyls.xml 文件中这个XML文件的结构分析如下:每一个STYLE标记定义一种样式,NAME是显示在下拉列表中的样 式名ELEMENTS性指定此样式所适用的对象,因为FCKEDITOR中 的样式是上下文敏感的 , 也就是

17、说 , 选择不同的对象 , 仅会显示针 对这类对象定义的样式拼写检查FCKEDITOR了两种拼写检查工具,一种是ieSpell,默认情况下 使用这种 , 使用这种方式的拼写检查 , 要求客户下载并安装 iespell 这个小软件 , 另外, 也提供 SpellPager 的方式来进行拼 写检查,不过,由于SPELLPAGE是由PHP编写的服务器端脚本, 因此,要求你的WE戌艮务器必须支持PHP脚本语言方可 更改拼写检查器的方式请参见有关配置文件的详细说明 压缩脚本为了提供脚本载入的效率,FCKEDITOR采用以下方法对脚本尽量 压缩以减少脚本尺寸 :1, 移除掉脚本中的注释2. 移除掉脚本中所

18、有无意义的空白另外,FCKEDITOR还提供了一个专门用于压缩脚本的工具以便你在发布时能减小文件尺寸 ,你可以将 _Packager 文件夹中的 Fckeditor.Packager.exe 复制 到FCKEDITO根文件夹来运行并压缩脚本本地化 FCKEDITOR如果FCKEDITOF没有提供您所需要的语言(实际上全有了 ),你也 可以自行制作新的语言,你只需要复制出EN.JS,然后在其基础上进行翻译.另外,语言名 称与对应的脚本文件名必须遵循 RFC3066 标准, 但是, 需要小写 , 例如 :Portuguess Language 对应的脚本文件名必须为 pt.js 如果需要针对某个国

19、家的某种语系 , 则可以在语系缩写后加上横 线及国家缩写即可在使用时 , 系统会自动侦测客户端语系及国别而运用适当的界面 当 建 立 一 种 新 的 语 言 后 , 你 必 须 在 Edit/lang/fcklanguagemanager.js 中为其建立一个条目 , 如 下所示:FCKLanguageManager.AvailableLanguages =en : English,pt : Portuguese需要提醒的是,文件必须保存为UTF-8格式 如何与服务器端脚本进行交互 ?请查看例子以得到相关内容另外,在ASP.NET中以以下步骤使用1. 把FCKEDITO添中到工具箱2. 托拽F

20、CKEDITO控件到页面3. 为其指定名称4. FCKEDITOR类的所有属性不光可以在代码中使用 ,而且可以作为FCKEDITOI控件的属性直接使用,例如,要改变皮肤,可以在UI 页面中指定SkinPath=/fckeditor/editor/skins/office2003即 可 , 其 实FCKEDITOI 的 ASP.NET 版本 可 以 做 得 更 好 , 你 可 以 找 到FCKEDITOR ASP.NET 2.1的源文件 , 然后修改该控件的设计 , 为其 暴露更多有用的属性 , 重新编译即可5, P0STBAC后的数据,使用FCKEDITO控件的value属性获得6. 由于默认

21、状态下,ASP.NET不允许提交含有 HTML及JAVASCRIPT的内容,因此,你必须将使用FCKEDITOR的页面的ValidateRequest设为false.(即可 )附:一、如何设置上传文件语言把 FCKeditor 根目录下面的 fckconfig.js 文件里 var _FileBrowserLanguage = asp ; / asp | aspx | cfm | lasso | perl | php | pyvar _QuickUploadLanguage = asp ; / asp | aspx | cfm | lasso | php这两行中改成您所需要调用的编辑器语言,

22、如用 则改为aspx; 二、解决中文的问题 : 在 web.config 中加入 :这样设置后可以显示中文的文件,但URL地址也是中文的;如果服务器对中文地址的解析不好,可能导致图片无法浏览;editorfilemanagerbrowserdefaultfrmresourceslist.html中的 OpenFile 函数,把 window.top.opener.SetUrl( fileUrl ) ;修改为:window.top.opener.SetUrl( escape(fileUrl) ) ;三 . 设置上传的目录:1: 在 web.config 中设置 :2: 在 Ses

23、sion 中设置 :在editorfilemanagerbrowserdefaultconnectorsaspxconn ector.aspx 中加入以下代码 :protected override void OnInit(EventArgs e)SessionFCKeditor:UserFilesPath = /fck/UpLoad1/;如何在 中动态设置上传图片的路径?1. 在 javascript 中修改 FCKConfig.ImageBrowserURL 的值,修 改方式如下:FCKConfig.ImageBrowserURL += ?Path= 要上传的文件路径 ;

24、如: 要把文件上传到站点根目录的 UploadFile 文件夹中, 则设置 为:FCKConfig.ImageBrowserURL += ?Path=/UploadFile;2. 在 editorfilemanagerbrowserdefaultconnectorsaspxcon nector.aspx 文件最后中增加以下程序: protected override void OnInit(EventArgs e) if( Request.QueryStringPath=null ) SessionFCKeditor:UserFilesPath = /UpLoadFiles/; / 设置默认值

25、elseSessionFCKeditor:UserFilesPath = Request.QueryStringPath;多环境下的配置和使用技巧在 fckeditor 中添加右键菜单现在网上介绍 FCKEditor 如何配置,如何精简的例子非常之多, 如有需要可以 google 一下,此处不必赘述。现在介绍一下,如 何自定义此编辑器,暂包括如何添加工具条上的 item ,产生响 应,添加右键菜单。 IT SEEMS VERY EASY!闲言少叙,书归正传。一、自定义右键菜单 :1、首先,在 editor/lang/zh-cn.js 里添加你所要添加的工具 条 item 的名字,此文件定义了一

26、个 FCKLang 变量,仿照里边的 格式写哦,如:First:第一,注意,如果是不在倒数第二行(倒 数第一行是“ ”) ,后边的这个逗号是一定要有的,不然网页中 不会出现编辑器,笔者曾经犯过如此低级的错误,待 醒悟后, 找一僻静之所大嘴巴子招呼 ; 呵呵,我们是中国人,自然在冒号 后对应汉语,这也是将来在网页中显示的内容。2、之后,在 editor/_source/internals/fckcommands.js里新 建 一 个 command:case First:oCommand = newFCKFirstCommand ( First, FCKLang.First); break注意那

27、个红色字体的 FCKFirstCommand 了么 ? 这个是一个自定义的comma nd稍候将讨论它。3、然后,在 editor/_source/internals/fckcontextmenu.js添加一个 context menu 。 在 case Generic :下面添加如下 :oGroup.Add( new FCKContextMenuItem( this, First, FCKLang.First, true ) ) ;其中第四个布尔类型的参数,如果指定为 true ,说明菜单有图标,反之则无。在此,我指明了我 所自定义的菜单是有图 标的,那么我就应该把 图标放在 editors

28、kinsxxxtoolbar目录下,其中 xxx 就是你在你的配置文件里选择的编辑器的皮肤, 但是我们的图标命名可是有学问 的,必须 是如 FCKContextMenuItem 构造函数 (且这么叫它 ) 第二 个字符串参数的小写字母形式,如,这里我的图标被命名为 first.gif 了。 Ok ,如此右键菜单就被添加上去了,运行你的 网页,看看 FCKEditor 是否奏效 ?如果不奏效的话就要重新参考 此文喽A_A。4 、 然 后 , 还 有 最 关 键 的 一 步 : 用 editor 下 的 fckeditor.original.html网页的内容代替 fckeditor.html 的

29、内容,同时不要忘记备份 fckeditor.html 文件 !5、现在开始讨论步骤 2中的FCKFirstCommand菜单添加上其 了,你总得让丫拥有什么功能吧?好,在 editor/_source/commandclasses/fck_othercommands.js里新建这个类:四大 FCKeditor 实战应用技巧一 般 建 立 好 类 后 , 还 要 建 立 两 个 静 态 函 数:xxx .prototype.Execute , xxx .prototype.GetState 。前者 是事件处理函数, 即点击了该右键菜单所要执行的功能全部写在 这个函数,后者返回菜单的状态(可用?不

30、可 用?) 。在此为了演示 , 我 们 实 现 一 个 最 简 单 的 功 能 :FCKPageCtotype.Execute=function() window.alert(It works!);够简单吧,只是不疼不痒的弹出一个提示框。 当然,这里我们也可以不用自定义 的 FCKFirstComma nd 而直接用 FCKEditor 定义好的 comma nd 比如 FCKDialogCommand,它也定义在 fck_othercommands.js 里,当然如果这样的话,弹出的会是一个 dialog 。 再次运行网 页,右击,点击你的自定义菜单,是否弹出提示框呢 ?

31、FCKeditor至今已经到了 2.3.1版本了,对于国内的 WEB开 发 者来说,也基本上都已经“闻风知多少”了,很多人将其融放到 自己的项目中, 更有很多大型的网站从中吃到了甜头。 今天开始, 我将一点点的介绍自己在使用 FCKeditor 过程中总结的一些技 巧,当然这些其实是FCK本来就有的,只是很多人用FCK的时候 没发现而已 :P1 、适时打开编辑器很多时候, 我们在打开页面的时候不需要直接打开编辑器, 而在 用到的时候才打开, 这样一来有很好的用户体验, 另一方面可以 消除FCK在加载时对页面打开速度的影响,如图所示 点击“ Open Editor 按钮后才打开编辑器界面实现原理

32、:使用 JAVASCRIPT版的FCK在页面加载时(未打开FCK)创建一个隐藏的 TextArea域,这个TextArea的name和ID 要和创建的FCK实例名称一致,然后点击Open Editor按钮时, 通过调用一段函数,使用 FCK的ReplaceTextarea()方法来创建 FCKeditor ,代码如下2、使用 FCKeditor 的 APIFCKeditor编辑器,提供了非常丰富的 API,用于给End User实 现很多想要定制的功能, 比如最基本的数据验证, 如何在提交的 时候用JS判断当前编辑器区域内是否有内容,FCK的API提供了 GetLength() 方法; 再比如

33、如何通过脚本向 FCK里插入内容,使用InsertHTML()等; 还有,在用户定制功能时,中间步骤可能要执行 FCK的一些内嵌 操作,那就用ExecuteCommand()方法。详细的API列表,请查看FCKeditor的Wiki。而常用的API,请 查看FCK压缩包里的_samples/html/sample08.html 。此处就不 贴代码了。3、外联编辑条(多个编辑域共用一个编辑条)这个功能是 2.3 版本才开始提供的, 以前版本的 FCKeditor 要在 同一个页面里用多个编辑器的话, 得一个个创建, 现在有了这个 外联功能, 就不用那么麻烦了, 只需要把工具条放在一个适当的 位置

34、,后面就可以无限制的创建编辑域了,如图: 要实现这种功能呢,需要先在页面中定义一个工具条的容器: ,然后再根据这个容器的 id 属性进 行设置。ASP 实现代码:JAVASCRIP实现代码:vdiv id=xToolbarx/divFCKeditor 1:vscript type=text/javascriptv!-/ Automatically calculates the editor base path based on the _samples directory./ This is usefull only for these samples. A real application

35、should use something like this:/ oFCKeditor.BasePath = /fckeditor/ ; / /fckeditor/is the default value.var sBasePathdocument.location.pathname.substring(0,document.locatio n.pathname.lastIndexOf(_samples) ;var oFCKeditor = new FCKeditor( FCKeditor_1 ) ;oFCKeditor.BasePath = sBasePath ;oFCKeditor.Hei

36、ght = 100 ;oFCKeditor.Config ToolbarLocation Out:parent(xToolbar) ;oFCKeditor.Value = This is some sample text. You are using FCKeditor. ;oFCKeditor.Create() ;/-FCKeditor 2:!-oFCKeditor = new FCKeditor( FCKeditor_2 ) ;oFCKeditor.BasePath = sBasePath ;oFCKeditor.Height = 100 ;ToolbarLocationoFCKedito

37、r.Config Out:parent(xToolbar) ; oFCKeditor.Value = This is some sample text. You are using FCKeditor. ;oFCKeditor.Create() ;/- 此部分的详细DEMO请参照: _samples/html/sample11.html _samples/html/sample11_frame.html4、文件管理功能、文件上传的权限问题 一直以后 FCKeditor 的文件管理部分的安全是个值得注意, 但很 多人没注意到的地方, 虽然 FCKeditor 在各个 Release 版本中一 直

38、存在的一个功能就是对上传文件类型进行过滤, 但是她没考虑 过另一个问题: 到底允许谁能上传?到底谁能浏览服务器文件? 之前刚开始用 FCKeditor 时,我就出现过这个问题, 还好 NetRube (FCKeditor 中文化以及 FCKeditor ASP 版上传程序的作者)及 时提醒了我,做法是去修改FCK上传程序,在里面进行权限判断, 并且再在 fckconfig.js 里把相应的一些功能去掉。但 随之 FCK 版 本 的 不 断 升 级 , 每 升 一 次 都 要 去 改 一 次 配 置 程 序 fckconfig.js ,我发觉厌烦了, 就没什么办法能更好的控制这种 配置么?事实上

39、,是有 的。在 fckconfig.js 里面,有关于是否打开上传和浏览服务器的设 置,在创建 FCKeditor 时,通过程序来判断是否创建有上传浏览 功能的编辑器。首先,我先在 fckconfig.js 里面把所有的上传 和浏览设置全设为 false ,接着我使用的代码如下:ASP版本:v%Dim oFCKeditorSet oFCKeditor = New FCKeditorwith oFCKeditor .BasePath = fckPath .Config(ToolbarLocation) = Out:fckToolBar if request.cookies(site_sn)(issuper)=yes then .Config(LinkBrowser) = true .Config(ImageBrowser) = true .Config(FlashBrowser) = true .Config(LinkUpload) = true .Config(ImageUpload) = true .Config(Flash

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论