jQuery-Terminal 是一个非常好的插件,在网页上有一个文本模式的终端界面。但是在 .HTA 而不是 .HTML 上运行时,它会弹出一个错误:“对 'in' 的无效操作:预期的对象”。别担心,我已经用丑陋的方式修复了它。问题是:如何通过 jQuery-Terminal.js 本身修复它?
/* .HTA 文件类似于 .HTML,但不是由浏览器运行,而是 Microsoft Windows 内置了一个不同的解释器 mshta.exe,以运行 HTA,而不受 .HTML 的所有限制。*/
我的解决方案是在“jquery-1.10.2.js”中添加一个if()语句(所以很丑),如下图:
inArray: function( elem, arr, i ) {
var len;
if ( arr ) {
if ( core_indexOf ) {
return core_indexOf.call( arr, elem, i );
}
len = arr.length;
i = i ? i < 0 ? Math.max( 0, len + i ) : i : 0;
for ( ; i < len; i++ ) {
// ----------- I add this statement -------------------------------------------------------
if ( typeof arr == 'string' && arr.indexOf(elem) != -1 ) {
return i;
}
// --------------------------------------------------------------------------------------
// Skip accessing in sparse arrays
if ( i in arr && arr[ i ] === elem ) {
return i;
}
}
}
return -1;
},
最奇怪的是 'arr' 应该是一个数组。但是当它实际上是一个“字符串”时,WWW 浏览器不会抱怨任何东西,但 HTA 解释器 mshta.exe 会提醒上面提到的错误。我相信这是 jQuery-Terminal-xxxx.js 插件本身的一个错误。
我希望 jQuery-Terminal-xxxx.js 插件有一天会修复它,或者现在更好地知道如何将它修复到 jQuery-Terminal-xxxx.js 中?
简化示例和所有详细信息可以在这里找到, http://www.evernote.com/shard/s22/sh/9f47a3fb-16ad-4761-b2ab-d702b9886c2e/577e35cd6e9ab8ee0cb7f3529e985be9