`

fckeditor和谷歌浏览器不兼容的问题

阅读更多
原因是它读取浏览器版本时报错,最简单的改动方法就是去掉验证,即在FCKEditro.isCompatible()代码中增加判断有AppleWebKit串就 return true;
private boolean isCompatible() {
  String userAgent=request.getHeader("user-agent");
  if(userAgent==null)
   return false;
  userAgent=userAgent.toLowerCase();
  if ((userAgent.indexOf("msie") !=-1) && (userAgent.indexOf("mac") == -1) && (userAgent.indexOf("opera") == -1)) {
   if(retrieveBrowserVersion(userAgent)>=5.5)
    return true;
  }
  else if (userAgent.indexOf("applewebkit") !=-1){
    return true;
  }
  else if (userAgent.indexOf("gecko") !=-1){
   if(retrieveBrowserVersion(userAgent)>=20030210)
    return true;
  }
  return false;
}

不过这种改动不能保证后续代码与浏览器的兼容性,不如用新版.
下面的是需修改文件的源码
package com.fredck.FCKeditor;

import javax.servlet.http.HttpServletRequest;

public class FCKeditor
{
  private FCKeditorConfigurations oConfig;
  private String instanceName;
  private String value = "";
  private String basePath;
  private String toolbarSet = "Default";
  private String width = "100%";
  private String height = "200";
  HttpServletRequest request;

  public String getInstanceName()
  {
    return this.instanceName;
  }

  public void setInstanceName(String value)
  {
    this.instanceName = value;
  }

  public String getValue()
  {
    return this.value;
  }

  public void setValue(String value)
  {
    this.value = value;
  }

  public String getBasePath()
  {
    return this.basePath;
  }

  public void setBasePath(String value)
  {
    this.basePath = value;
  }

  public String getToolbarSet()
  {
    return this.toolbarSet;
  }

  public void setToolbarSet(String value)
  {
    this.toolbarSet = value;
  }

  public String getWidth()
  {
    return this.width;
  }

  public void setWidth(String value)
  {
    this.width = value;
  }

  public String getHeight()
  {
    return this.height;
  }

  public void setHeight(String value)
  {
    this.height = value;
  }

  public FCKeditorConfigurations getConfig()
  {
    return this.oConfig;
  }

  public void setConfig(FCKeditorConfigurations value)
  {
    this.oConfig = value;
  }

  public FCKeditor(HttpServletRequest req)
  {
    this.request = req;
    this.basePath = this.request.getContextPath() + "/FCKeditor/";
    this.oConfig = new FCKeditorConfigurations();
  }

  public FCKeditor(HttpServletRequest req, String parInstanceName)
  {
    this.request = req;
    this.basePath = this.request.getContextPath() + "/FCKeditor/";
    this.instanceName = parInstanceName;
    this.oConfig = new FCKeditorConfigurations();
  }

  public FCKeditor(HttpServletRequest req, String parInstanceName, String parWidth, String parHeight, String parToolbarSet, String parValue)
  {
    this.request = req;
    this.basePath = this.request.getContextPath() + "/FCKeditor/";
    this.instanceName = parInstanceName;
    this.width = parWidth;
    this.height = parHeight;
    this.toolbarSet = parToolbarSet;
    this.value = parValue;
    this.oConfig = new FCKeditorConfigurations();
  }

  private boolean isCompatible()
  {
    String userAgent = this.request.getHeader("user-agent");
    if (userAgent == null)
      return false;
    userAgent = userAgent.toLowerCase();
    if ((userAgent.indexOf("msie") != -1) && (userAgent.indexOf("mac") == -1) && (userAgent.indexOf("opera") == -1)) {
      if (retrieveBrowserVersion(userAgent) < 5.5D) break label91;
      return true;
    }

    label91: return ((userAgent.indexOf("gecko") != -1) &&
      (retrieveBrowserVersion(userAgent) >= 20030210.0D));
  }

  private double retrieveBrowserVersion(String userAgent)
  {
    if (userAgent.indexOf("msie") > -1) {
      str = userAgent.substring(userAgent.indexOf("msie") + 5);
      return Double.parseDouble(str.substring(0, str.indexOf(";")));
    }

    String str = userAgent.substring(userAgent.indexOf("gecko") + 6);
    return Double.parseDouble(str.substring(0,8));
  }

  private String HTMLEncode(String txt)
  {
    txt = txt.replaceAll("&", "&amp;");
    txt = txt.replaceAll("<", "&lt;");
    txt = txt.replaceAll(">", "&gt;");
    txt = txt.replaceAll("\"", "&quot;");
    txt = txt.replaceAll("'", "’");
    return txt;
  }

  public String create()
  {
    StringBuffer strEditor = new StringBuffer();

    strEditor.append("<div>");
    String encodedValue = HTMLEncode(this.value);

    if (isCompatible())
    {
      strEditor.append("<input type=\"hidden\" id=\"" + this.instanceName + "\" name=\"" + this.instanceName + "\" value=\"" + encodedValue + "\">");

      strEditor.append(createConfigHTML());
      strEditor.append(createIFrameHTML());
    }
    else
    {
      strEditor.append("<TEXTAREA name=\"" + this.instanceName + "\" rows=\"4\" cols=\"40\" style=\"WIDTH: " + this.width + "; HEIGHT: " + this.height + "\" wrap=\"virtual\">" + encodedValue + "</TEXTAREA>");
    }
    strEditor.append("</div>");
    return strEditor.toString();
  }

  private String createConfigHTML() {
    String configStr = this.oConfig.getUrlParams();

    if (!(configStr.equals("")))
      configStr = configStr.substring(1);

    return "<input type=\"hidden\" id=\"" + this.instanceName + "___Config\" value=\"" + configStr + "\">";
  }

  private String createIFrameHTML()
  {
    String sLink = this.basePath + "editor/fckeditor.html?InstanceName=" + this.instanceName;

    if (!(this.toolbarSet.equals("")))
      sLink = sLink + "&Toolbar=" + this.toolbarSet;

    return "<iframe id=\"" + this.instanceName + "___Frame\" src=\"" + sLink + "\" width=\"" + this.width + "\" height=\"" + this.height + "\" frameborder=\"no\" scrolling=\"no\"></iframe>";
  }
}
分享到:
评论

相关推荐

    FCKeditor-2.3.jar 对谷歌浏览器兼容.

    FCKeditor-2.3.jar 对谷歌浏览器兼容.希望对各位有用。

    FCKEditor Asp.net精简版

    这个精简版是针对原版FCKEditor进行优化和简化后的版本,旨在为开发者提供一个轻量级、易于集成和使用的文本编辑解决方案。 在ASP.NET框架下,FCKEditor允许用户在网页上创建和编辑内容,其功能类似于常见的桌面...

    FCKeditor-2.3.rar新闻编辑器

    6. **维护与升级**:由于FCKeditor是开源项目,社区不断为它提供更新和修复,所以保持FCKeditor的版本更新至关重要,以确保其兼容性和安全性。 7. **替代品和竞争对手**:随着时间的推移,FCKeditor逐渐被其他编辑...

    fckeditor2.6.1在线编辑器

    6. **兼容性**:FCKeditor2.6.1版本在多种浏览器上表现良好,包括当时的主流浏览器,确保了跨平台的兼容性。 7. **插件扩展**:开发者可以通过API和插件机制扩展FCKeditor的功能,以适应特定的项目需求。 **技术...

    最新FCKeditor_2.6 版本 FCKeditor编辑器和控件

    兼容目前的浏览器 里面包含FCKeditor编辑器和控件 一、集成方法 FCKeditor应用在ASP.NET上,需要两组文件,一组是FCKeditor本身,另一个是用于ASP.NET的FCKeditor控件(分为1.1和2.0两个版本,这里使用2.0版本)。 ...

    jsp在线编辑器fckeditor和kindeditor的实例

    在IT行业中,尤其是在Web开发领域,富文本编辑器(如FCKeditor和KindEditor)扮演着重要的角色。这些编辑器允许用户在网页上创建、...在选择和使用编辑器时,应根据项目需求和用户群体来决定,确保最佳的兼容性和性能。

    fckeditor 2.3 兼容chrome解Number转换异常

    在IT行业中,编辑器是开发人员日常工作中不可或缺的工具,其中...在维护和升级开源软件时,时刻关注社区更新和修复是非常重要的,这可以帮助我们及时发现并解决潜在的兼容性问题,提高软件的稳定性和用户体验。

    fckeditor在线编辑器

    FCKeditor具有良好的浏览器兼容性,支持Internet Explorer 5.5+(Windows)、Mozilla Firefox 1.0+、Mozilla 1.3+以及Netscape 7+等主流浏览器,后续版本还计划支持Opera。 使用FCKeditor的步骤包括: 1. 将下载的...

    fckeditor 2.3 兼容chrome解决方案

    fckeditor 2.3无法兼容chrome,而新版本又做了很大的修改,要升级很麻烦。在网上找了一个2.3的jar包,可直接替换原来的fckeditor库,解决chrome兼容问题。

    FckEditor在线编辑器

    FckEditor是一款强大的开源在线文本编辑器,广泛应用于网站建设和内容管理系统中,为用户提供类似桌面文字处理软件的编辑体验。它的全称为“FCKeditor”,最初由Fernando Goycoolea创建,后来更名为CKEditor。这款...

    fckeditor源文件和demo

    - **兼容性**:FCKeditor支持多种浏览器,包括IE、Firefox、Chrome、Safari和Opera等,但不同版本的浏览器可能存在兼容性问题,需要在实际应用中进行测试。 - **安全性**:FCKeditor允许用户输入HTML,这可能导致XSS...

    FCKeditor2.3在线编辑器

    FCKeditor2.3是一款强大的在线编辑器,尤其在那个时代,它以其广泛的浏览器兼容性和丰富的功能,为网页内容编辑带来了极大的便利。尽管现在有更先进的富文本编辑器如TinyMCE、CKEditor等,但FCKeditor对于了解富文本...

    FCKeditor在线文本编辑器使用

    兼容性与样式 FCKeditor兼容大部分现代浏览器,包括IE、Firefox、Chrome、Safari和Opera。然而,由于浏览器之间的差异,可能会遇到样式显示不一致的问题,此时需要调整编辑器的CSS样式来确保在各种环境下的一致性...

    FCKEditor在线编辑器

    然而,随着技术的发展,FCKeditor已经被其后续版本CKEditor所取代,后者在性能、稳定性和功能上都有所提升,但FCKeditor仍然是一些旧项目和开发者钟爱的选择。对于初学者或需要快速实现在线编辑功能的开发者来说,...

    FCKeditor在线编辑器教程

    2. 兼容性:虽然FCKeditor支持多种浏览器,但在不同版本间可能存在差异,需要进行兼容性测试。 3. 更新维护:定期检查并更新FCKeditor,以获取最新的安全修复和功能增强。 通过本教程的学习,您将能够熟练掌握...

    fckeditor

    1. **多浏览器支持**:FCKeditor设计之初就考虑到了广泛的浏览器兼容性,支持包括Internet Explorer、Firefox、Chrome、Safari和Opera在内的主流浏览器,使得它能在各种平台上稳定运行。 2. **丰富的编辑功能**:...

    fckeditor文档编辑器插件

    它支持各种浏览器,包括Internet Explorer、Firefox、Chrome和Safari等,确保了跨平台的兼容性。通过fckeditor,开发者可以轻松地在网页上实现文本编辑、图像上传、链接插入等功能,极大地提升了用户的在线编辑体验...

    jsp编辑器 fckeditor

    【标题】:JSP编辑器FCKeditor与Struts2的兼容性问题及解决方法 在Web开发中,FCKeditor是一款广泛使用的富文本编辑器,它为用户提供了一个类似于Word的在线编辑界面,使得在网页上编辑内容变得更加方便。FCKeditor...

    fckeditor 编辑器 和使用说明

    这款编辑器以其丰富的功能、良好的兼容性和易用性赢得了广泛的使用。 1. **主要功能** - **文本格式化**:fckeditor支持多种文本格式,如加粗、斜体、下划线、字体选择、字号调整等。 - **链接管理**:创建、编辑...

Global site tag (gtag.js) - Google Analytics