在.HTA而不是.HTML上运行jQuery时出现终端错误。我可以用一种丑陋的方式来修复它
jQuery终端是一个非常好的插件,可以在网页上使用文本模式终端界面。 但在.HTA上运行时会弹出一个错误:“对'in'的操作无效:应为对象” 而不是.HTML。别担心,我已经用一种丑陋的方式把它修好了。问题是:如何修复它 通过jQuery-Terminal.js本身 /* .HTA文件类似于.HTML,但Microsoft Windows内置了不同的 解释器mshta.exe可以运行HTA,而不受.HTML上的所有限制。 */ 我的解决方案是在“jquery-1.10.2.js”中添加一个if()语句(所以很难看),如下所示:在.HTA而不是.HTML上运行jQuery时出现终端错误。我可以用一种丑陋的方式来修复它,jquery,jquery-plugins,terminal,hta,jquery-terminal,Jquery,Jquery Plugins,Terminal,Hta,Jquery Terminal,jQuery终端是一个非常好的插件,可以在网页上使用文本模式终端界面。 但在.HTA上运行时会弹出一个错误:“对'in'的操作无效:应为对象” 而不是.HTML。别担心,我已经用一种丑陋的方式把它修好了。问题是:如何修复它 通过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;
},
inArray:函数(元素、arr、i){
瓦伦;
如果(arr){
if(核心指数){
返回核心索引调用(arr,elem,i);
}
len=arr.长度;
i=i?i<0?数学最大值(0,len+i):i:0;
对于(;i
strage的意思是“arr”应该是一个数组。但当它实际上是一个“字符串”时,WWW浏览器
不会抱怨任何事情,但HTA解释器mshta.exe会提醒上述错误。我相信
这是jQuery-Terminal-xxxx.js插件本身的一个bug
我希望jQuery-Terminal-xxxx.js插件有一天能修复它,或者更好地知道如何将它修复到
现在是jQuery-Terminal-xxxx.js吗
简化的示例和所有细节都可以在这里找到,
如果您在源代码中搜索inArray,您只能找到两个位置,一个是
if (!$.inArray(interpreter_name, name)) {
names.push(interpreter_name);
$.Storage.set(name, $.json_stringify(names));
}
这是一个输入错误,它应该是名称(数组)而不是名称(字符串)最坏情况下,HTA是在IE5.5模式下运行的。您是否已注意到正确的doctype声明和正确的
x-ua-compatible“
-值?请尝试放置console.log(Error().stack);
以查看调用它的位置。