我有以下代码段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
答案 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不是编译器,因此相同的代码在不同的环境中可能会有不同的行为。