2017-12-20 12 views
1

私は以下のコードスニペットをEloquent JavaScriptの章から持っています。フォームとフォームフィールドここでは、という文字列をkeydownに挿入します。JavaScriptコードは他のOSとは異なっていますか?

// Input field 
<textarea></textarea> 

// The following code wires up 
// a <textarea> tag with an event handler that, when you press F2, inserts 
// the string “Khasekhemwy” for you. 

var textarea = document.querySelector('textarea'); 
textarea.addEventListener('keydown', function(event) { 
// The key code for F2 happens to be 113 
if (event.keydown == 113) { 
    replaceSelection(textarea, "Khasekhemwy"); 
    event.preventDefault(); 
    } 
}); 

// The replaceSelection function replaces the currently selected part of a 
// text field’s content with the given word and then moves the cursor after 
// that word so that the user can continue typing. 

function replaceSelection(field, word) { 
    var from = field.selectionStart, to = field.selectionEnd; 
    field.value = field.value.slice(0, from) + word + 
           field.value.slice(to); 
    // Put the c u r s o r after the word 
    field.selectionStart = field.selectionEnd = from + word.length; 
} 

私は、最新のブラウザを使用してMacintoshコンピュータ上だと私はそれがこのコードが上で書かれた別のOSのどちらかだか、それはコードだと感じ始めています。

注:Macintosh上で呼び出すF2 = fn + F2あなたは、コードを誤って入力している

+0

これは 'F *'やその他のキーを呼び出すときだけですか? – user7808407

+0

'event.key'の値は何ですか? –

+0

イベントにkeydown-propertyが設定されていないため、動作しません。 – Esko

答えて

-1

正解は「はい」です。しかしあなたの質問の範囲ではありません。

JSの実行結果は、あなたのJSを実行するユーザーに基づいています。あなたの質問では、DOMで作業しているので、私はあなたがブラウザで作業すると仮定します。この場合、ブラウザは実行者になり、実行結果はブラウザによって異なる場合があります(特にDOM操作の場合)。

第2のポイントは、必ずしもブラウザのスコープ内でJSを実行するとは限りません。 Node.Jを使用する別の一般的なアプローチこの場合、ノードの異なるバージョンに対して異なる実行が可能です。

そして3点目。 Windows(OSとして)はJSを単独で実行できます。したがって、この実行の結果はMacとはまったく異なります。

JSはコンパイルされていないので、同じコードは異なる環境で異なる動作をすることがあります。

+0

あなたの答えはこの[記事](https://developer.mozilla.org/en-US/docs/Learn/Tools_and_testing/Cross_browser_testing/JavaScript)に従って有用であることがわかりました –

+1

@DomKこれはもう少しです。 JSは実際にエグゼキュータに依存しているためです。 – Vitalii

2

(コピー時に?)。 if (event.keydown == 113)ではなくif (event.keyCode == 113)と表示されます。

event.keydownはおそらく常にundefinedと評価されるため、条件は決して真ではありません。

+1

しかし、keyCodeの使用も推奨されていません:https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode "この機能はWeb標準から削除されました。可能であれば、既存のコードを使用することは避けてください。このページの下部にある互換性の表を参照して決定を導きます。この機能はいつでも機能しなくなる可能性があることに注意してください。 – teukkam

+1

私はそれを学ぶ過程にあるので、私はそれをタイプしていました。 –

関連する問題