【问题标题】:Rich Text (YUI) Editor Broken on IE11富文本 (YUI) 编辑器在 IE11 上损坏
【发布时间】:2013-11-22 16:05:35
【问题描述】:

我正在运行 Internet Explorer 11 和 YUI 2:富文本编辑器似乎无法正常工作。有关更多详细信息,请参阅随附的屏幕截图。任何想法如何在 IE11 下解决这个问题?

【问题讨论】:

  • 这不应该报告给 YUI 而不是在这里吗?提交错误。你不应该搬到 YUI3 吗?
  • 大家好,我是 YUI 团队的成员。如果您有问题的 JSFiddle/Bin,或者我们可以查看的任何网站,我们绝对非常乐意为您提供帮助! @epascarello 是正确的,官方不再支持 YUI2,但我们仍然可以为您提供尽可能多的帮助。
  • @ClarenceLeung,谢谢!您可以使用 IE 11 访问 YUI 2 官方网站查看结果。 developer.yahoo.com/yui/examples/editor/simple_adv_editor.html

标签: internet-explorer editor yui internet-explorer-11


【解决方案1】:

IE换了User-Agent,YUI(2.9)需要动手术。

  1. 修改 yahoo-dom-event.js: 找到这个:YAHOO.env.parseUA,然后最后添加一些东西,告诉 YAHOO.env.ua 现在在 IE 11 下。像这样:

     if (g.ie == 0 && c.indexOf('Trident') != -1){
         g.ie = 11;
     }
    
  2. 修改 editor.js: 找到_setInitialContent 函数,在包含“BackCompat”的 if-branch 之后, 添加这个:

    this.browser = YAHOO.env.parseUA();
    

    然后就在下面的 if-branch (if (this.browser.ie || this.browser.webkit || this.browser.opera || (navigator.userAgent.indexOf('Firefox/1.5') != -1))) 中: 添加这个:

     if (this.browser.ie == 11) {
         this.browser.ie = 0;
     }
    

希望成功,祝你好运!

【讨论】:

  • 完美运行! - 当销售经理说:“呃,我们不能为这些订单添加注释。你能在他们今天早上都登录之前把它修好吗?”
【解决方案2】:

kinglomei 的解决方案有效,但您可能需要对其稍作修改以使其适合您。 在 YUI 中,可以在许多不同的地方定义 parseUA 函数,具体取决于您设置网站的方式;我们碰巧在 yahoo.js 文件中定义了它,但正如 kinglomei 所说,它通常在 utilies、yuiloader、yui-dom-event 和 yahoo-dom-event 中定义。

如果您使用的是缩小后的代码,kinglomei 的解决方案可以完美运行,但如果您引用的是调试代码或只是未缩小的代码,您的代码应该看起来像这样(缩小重命名变量):

 if (o.ie == 0 && ua.indexOf('Trident') != -1){
     o.ie = 11;
 }

【讨论】:

    【解决方案3】:

    我在其他地方发布了这个,但认为它也适用于这里:

    我在旧网站上使用 2.7.0b。请理解,除非您使用完全相同版本的库,否则这些“修复”对您来说都不是完全正确的。这是因为每个都被“最小化”了,为了最小化,使用了各种字符。因此,您可能需要进行一些狩猎。另外,请记住,这对您来说可能会有所不同,具体取决于您是单独使用 yahoo.js、yahoo-dom-event.js 还是在我的情况下使用 utility.js。所以你需要做相应的调整。

    第 1 步:

    在实用程序/utilities.js 和 yahoo-dom-event/yahoo-dom-event.js 上 ln 7 字符 1592(yahoo.js 的 ln 396): 紧接着:

    if(A&&A[1]){C.caja=parseFloat(A[1]);}
    

    但之前:

    return C;}();
    

    添加这个:

    if (C.ie==0&&B.indexOf('Trident')!=-1){C.ie=11;}
    

    第 2 步:

    在 editor/editor-min.js 和 editor/simpleeditor-min.js 第 13 行字符 2078(editor.js 的 ln 3135 和 simpleeditor.js 的 ln 3135)

    紧接着:

    (navigator.userAgent.indexOf("Firefox/1.5")!=-1)){
    

    但之前:

    try{if(this.browser.air)
    

    添加这个:

    if(this.browser.ie==11){this.browser.ie=0;}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-18
      • 1970-01-01
      • 2010-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多