jQuery-Terminal は、Web ページにテキスト モードのターミナル インターフェイスを持たせるための非常に優れたプラグインです。しかし、.HTML ではなく .HTA で実行すると、「Invalid operation to 'in': Object expected」というエラーが表示されます。心配しないでください、私はそれを醜い方法で修正しました。質問: jQuery-Terminal.js 自体で修正する方法は?
/* .HTA ファイルは .HTML に似ていますが、ブラウザーで実行する代わりに、Microsoft Windows に組み込みの異なるインタープリター mshta.exe を使用して、.HTML のすべての制限なしで HTA を実行します。*/
私の解決策は、以下に示すように、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 プラグインがいつか修正してくれることを願っています。
簡単な例とすべての詳細は、 http://www.evernote.com/shard/s22/sh/9f47a3fb-16ad-4761-b2ab-d702b9886c2e/577e35cd6e9ab8ee0cb7f3529e985be9にあります。