我面临此链接中提到的相同问题(富文本(YUI)编辑器在 IE11 上损坏,他们为 YUI(2.9)提供了解决方案,但我在我的应用程序中使用YUI(2.5.2)。我没有找到YAHOO yahoo-dom- event.js中的 .env.parseUA。我在YUI(2.5.2) 库中搜索了YAHOO.env.parseUA属性。谁能建议如何为 YUI(2.5.2) 解决这个问题。
3 回答
我在旧网站上使用 2.7.0b。请理解,除非您使用的是库的确切版本,否则这些“修复”对您来说都不是完全正确的。这是因为每个都被“最小化”了,为了最小化,使用了各种字符。因此,您可能需要进行一些狩猎。另外,请记住,这对您来说可能会有所不同,具体取决于您是单独使用 yahoo.js、yahoo-dom-event.js 还是在我的情况下使用 utility.js。所以你需要做相应的调整。
步骤1:
在 ln 7 字符 1592(yahoo.js 的 ln 396)上的实用程序/实用程序.js 和 yahoo-dom-event/yahoo-dom-event.js 中: 紧接着:
if(A&&A[1]){C.caja=parseFloat(A[1]);}
但之前:
return C;}();
添加这个:
if (C.ie==0&&B.indexOf('Trident')!=-1){C.ie=11;}
第2步:
在第 13 行的 editor/editor-min.js 和 editor/simpleeditor-min.js 字符 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;}
对simple-editor.js使用以下更改:
- 查找所有实例
this.browser.ie
- 全部替换为
!!window.MSInputMethodContext || this.browser.ie
虽然没有 YAHOO.env.parseUA,但 yahoo-dom-event.js 在 2.5.2 中确实有 YAHOO.env.ua。我能够通过添加来完成这项工作
else{A=B.match(/rv:([^\s\)]*)/);if(A&&A[1]){C.ie=parseFloat(A[1]);}}
之间
A=B.match(/Gecko\/([^\s]*)/);if(A){C.gecko=1;A=B.match(/rv:([^\s\)]*)/);if(A&&A[1]){C.gecko=parseFloat(A[1]);}}
和
}}}return C;}();
在第 7 行,第 1514 列。
这会在用户代理字符串中查找修订号,并将其设置为 ie,如果它不匹配任何其他字符串。使用 Edge 时,这将返回 ie = 11。
为了可读性,添加我的部分后,YAHOO.env.ua 的代码如下所示
YAHOO.env.ua = function () {
var C = { ie: 0, opera: 0, gecko: 0, webkit: 0, mobile: null, air: 0 };
var B = navigator.userAgent, A;
if ((/KHTML/).test(B)) {
C.webkit = 1;
}
A = B.match(/AppleWebKit\/([^\s]*)/);
if (A && A[1]) {
C.webkit = parseFloat(A[1]);
if (/ Mobile\//.test(B)) {
C.mobile = "Apple";
} else {
A = B.match(/NokiaN[^\/]*/);
if (A) {
C.mobile = A[0];
}
}
A = B.match(/AdobeAIR\/([^\s]*)/);
if (A) {
C.air = A[0];
}
}
if (!C.webkit) {
A = B.match(/Opera[\s\/]([^\s]*)/);
if (A && A[1]) {
C.opera = parseFloat(A[1]);
A = B.match(/Opera Mini[^;]*/);
if (A) {
C.mobile = A[0];
}
} else {
A = B.match(/MSIE\s([^;]*)/);
if (A && A[1]) {
C.ie = parseFloat(A[1]);
} else {
A = B.match(/Gecko\/([^\s]*)/);
if (A) {
C.gecko = 1;
A = B.match(/rv:([^\s\)]*)/);
if (A && A[1]) {
C.gecko = parseFloat(A[1]);
}
} else {
A = B.match(/rv:([^\s\)]*)/);
if (A && A[1]) {
C.ie = parseFloat(A[1]);
}
}
}
}
}
return C;
}();