.on[事件名称] 与 addEventListener
.on[event name] vs addEventListener
我尝试创建复制处理程序,但我做不到。
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<title>test</title>
</head>
<body>
<h1>Test</h1>
<span class = "test"></span>
<script type = "text/javascript" src = "script.js"></script>
</body>
</html>
function handleCopy() {
document.querySelector("span.test").innerText = "Copied";
}
window.oncopy = handleCopy;
我从 index.html 复制,但 js 不会更改跨度。但是把js代码改成这样,跨度就变了。
function handleCopy() {
document.querySelector("span.test").innerText = "Copied";
}
window.addEventListener("copy", handleCopy);
为什么会这样?
对不起我糟糕的英语:(
发生这种情况是因为 window
对象中没有 oncopy
属性。如果您打开控制台并输入“window.onco”,建议中就没有 oncopy
。在文档中,这不是很清楚,但是当查看 Event handlers, oncopy
event is not listed, nor it can't be found on the following Event handlers implemented from elsewhere list. Instead, you can find it from Events 列表时,序言中的哪个说:“使用 addEventListener() 收听这些事件”。看起来这篇文章需要一个小的修正,因为序言还说这些事件可以用 oneventname
属性 附加,显然这并非在所有情况下都是如此。
copy
事件不是 GlobalEventHandler,因此在 window
上没有自己的可用 IDL 处理程序。
此事件定义为在 HTMLElement 上触发,这就是 oncopy
IDL 可访问的地方:
console.log("oncopy" in HTMLElement.prototype);
而且因为它是 DocumentAndElementEventHandler,您也可以在 document
上找到它。
因此,如果您想在 window
上捕获事件,那将通过冒泡并感谢 addEventListener()
方法。
addEventListener("copy", (evt) => {
console.log("copied");
});
<input value="copy me">
否则,您可以使用 document
或任何父 HTMLElement 的事件处理程序(例如 document.body
):
document.oncopy = (evt) => {
console.log("copied");
}
<input value="copy me">
我尝试创建复制处理程序,但我做不到。
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8">
<title>test</title>
</head>
<body>
<h1>Test</h1>
<span class = "test"></span>
<script type = "text/javascript" src = "script.js"></script>
</body>
</html>
function handleCopy() {
document.querySelector("span.test").innerText = "Copied";
}
window.oncopy = handleCopy;
我从 index.html 复制,但 js 不会更改跨度。但是把js代码改成这样,跨度就变了。
function handleCopy() {
document.querySelector("span.test").innerText = "Copied";
}
window.addEventListener("copy", handleCopy);
为什么会这样? 对不起我糟糕的英语:(
发生这种情况是因为 window
对象中没有 oncopy
属性。如果您打开控制台并输入“window.onco”,建议中就没有 oncopy
。在文档中,这不是很清楚,但是当查看 Event handlers, oncopy
event is not listed, nor it can't be found on the following Event handlers implemented from elsewhere list. Instead, you can find it from Events 列表时,序言中的哪个说:“使用 addEventListener() 收听这些事件”。看起来这篇文章需要一个小的修正,因为序言还说这些事件可以用 oneventname
属性 附加,显然这并非在所有情况下都是如此。
copy
事件不是 GlobalEventHandler,因此在 window
上没有自己的可用 IDL 处理程序。
此事件定义为在 HTMLElement 上触发,这就是 oncopy
IDL 可访问的地方:
console.log("oncopy" in HTMLElement.prototype);
而且因为它是 DocumentAndElementEventHandler,您也可以在 document
上找到它。
因此,如果您想在 window
上捕获事件,那将通过冒泡并感谢 addEventListener()
方法。
addEventListener("copy", (evt) => {
console.log("copied");
});
<input value="copy me">
否则,您可以使用 document
或任何父 HTMLElement 的事件处理程序(例如 document.body
):
document.oncopy = (evt) => {
console.log("copied");
}
<input value="copy me">