编写JavaScript代码与其他操作系统有何不同?

时间:2017-12-20 12:48:35

标签: javascript

我有以下代码段Eloquent JavaScript,第 18章。表单和表单字段,它假设在keydown上插入字符串

// 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计算机上使用最新的浏览器,我开始意识到这是代码编写的不同操作系统,或者它是代码。

注意:在Macintosh上调用F2 = fn + F2

2 个答案:

答案 0 :(得分:2)

您输错了代码(复制时?)。它应该是if (event.keyCode == 113)而不是if (event.keydown == 113)

event.keydown可能总是评估为undefined,因此条件永远不会成立。

答案 1 :(得分:-1)

正确答案是肯定的。但不在你的问题范围内。

JS执行基于谁来执行你的JS。在您的问题中,您正在使用DOM,因此我假设您使用浏览器。在这种情况下,浏览器将是您的执行者,执行结果可能不同(特别是对于DOM操作),具体取决于浏览器。

第二点是我们并不总是在浏览器范围内执行JS。另一种使用Node.Js的常用方法。在这种情况下,对于节点的不同版本,执行可以是不同的。

第三点。 Windows(作为操作系统)可以自己执行JS。因此执行的结果将与Mac完全不同:)。

请注意,JS不是编译器,因此相同的代码在不同的环境中可能会有不同的行为。