Редактор форматированного текста (YUI) не работает в IE11

Я использую Internet Explorer 11 и YUI 2: Rich Text Editor не работает. Пожалуйста, смотрите прикрепленный снимок экрана для более подробной информации. Любые идеи, как исправить это в IE11?

введите здесь описание изображения


person Tester    schedule 22.11.2013    source источник
comment
Разве об этом не следует сообщать в YUI, а не здесь? Сообщить об ошибке. А не стоит ли переходить на YUI3?   -  person epascarello    schedule 22.11.2013
comment
Привет, я член команды YUI. Если у вас есть JSFiddle/Bin проблемы или любой сайт, на который мы можем взглянуть, мы определенно более чем рады помочь вам! @epascarello прав, что YUI2 больше официально не поддерживается, но мы все еще можем помочь вам, чем сможем.   -  person Clarence Leung    schedule 23.11.2013
comment
@ClarenceLeung, спасибо! Вы можете просто зайти на официальный сайт YUI 2, используя IE 11, чтобы увидеть результат. developer.yahoo.com/yui/examples/editor/simple_adv_editor.html   -  person Tester    schedule 25.11.2013


Ответы (3)


Поскольку 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 и после ветки if, которая включает «BackCompat», добавьте это:

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

    затем просто в следующей ветке if (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;
     }
    

Надежда работает, удачи!

person kinglomei    schedule 29.11.2013
comment
Работал отлично! - Ничего похожего на возню, когда менеджер по продажам говорит: "Ну, мы не можем добавлять примечания к этим заказам". Вы можете исправить это, прежде чем они все войдут сегодня утром? - person cbmckay; 17.12.2015

Решение kinglomei работает, но вам, возможно, придется немного изменить его, чтобы оно работало на вас. В YUI эта функция parseUA может быть определена во многих разных местах в зависимости от того, как вы настроили свой веб-сайт; наш случай определяет его в файле yahoo.js, но он часто определяется в utilies, yuiloader, yui-dom-event и yahoo-dom-event, как заявил kinglomei.

Если вы используете минимизированный код, решение kinglomei работает отлично, но если вы ссылаетесь на отладочный или просто неминифицированный код, вместо этого ваш код должен выглядеть так (минификация переименовывает переменные):

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

Я разместил это в другом месте, но подумал, что это применимо и здесь:

Я использую 2.7.0b на устаревшем сайте. Просто поймите, что ни одно из этих «исправлений» не будет точным для вас, если вы не используете точно такую ​​же версию библиотеки. Это связано с тем, что по мере того, как каждый из них был «минимизирован», для минимизации использовались различные символы. Так что, возможно, вам придется заняться охотой. ТАКЖЕ имейте в виду, что это может отличаться для вас в зависимости от того, используете ли вы yahoo.js сам по себе, yahoo-dom-event.js или, как в моем случае,utilities.js. Поэтому вам нужно будет внести соответствующие коррективы.

Шаг 1:

В утилитах/utilities.js и yahoo-dom-event/yahoo-dom-event.js на 7-м символе 1592 (ln 396 yahoo.js): сразу после:

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 (ln 3135 в editor.js и ln 3135 в simpleeditor.js)

Сразу после:

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

Но прежде:

try{if(this.browser.air)

Добавь это:

if(this.browser.ie==11){this.browser.ie=0;}
person jacobfogg    schedule 02.10.2014