Ошибка jQuery-Terminal при запуске на.HTA вместо.HTML. Я могу исправить это безобразно
jQuery-Terminal - очень хороший плагин, чтобы иметь текстовый интерфейс терминала на веб-странице. Но появляется ошибка: "Недопустимая операция для" in ": ожидается объект" при запуске на.HTA вместо.HTML. Не волнуйтесь, я исправил это ужасно. Вопрос: как это исправить самим jQuery-Terminal.js?
/ *.HTA файл похож на.HTML, но вместо запуска в браузерах в Microsoft Windows встроенный интерпретатор mshta.exe для запуска HTA без всех этих ограничений на.HTML. */
Мое решение состоит в том, чтобы добавить оператор if() в "jquery-1.10.2.js" (так это ужасно), как показано ниже:
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
1 ответ
Если вы ищете inArray
в исходном коде вы найдете только два места, одно
if (!$.inArray(interpreter_name, name)) {
names.push(interpreter_name);
$.Storage.set(name, $.json_stringify(names));
}
это опечатка, это должны быть имена (массив), а не имя (строка)