From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- files/zh-cn/web/api/event/cancelable/index.html | 74 +++++++++++++++++++++++++ 1 file changed, 74 insertions(+) create mode 100644 files/zh-cn/web/api/event/cancelable/index.html (limited to 'files/zh-cn/web/api/event/cancelable') diff --git a/files/zh-cn/web/api/event/cancelable/index.html b/files/zh-cn/web/api/event/cancelable/index.html new file mode 100644 index 0000000000..260da1a336 --- /dev/null +++ b/files/zh-cn/web/api/event/cancelable/index.html @@ -0,0 +1,74 @@ +--- +title: event.cancelable +slug: Web/API/Event/cancelable +translation_of: Web/API/Event/cancelable +--- +

{{ ApiRef("DOM") }}

+ +

{{domxref("Event")}} 实例的只读属性 cancelable 表明该事件是否可以被取消,当事件被阻止之后,该事件就好像没有被触发一样。如果事件不能被取消,则其 cancelable 属性的值为 false,且事件发生时无法在事件监听回调中停止事件。

+ +

在许多事件的监听回调中调用{{domxref("event.preventDefault", "preventDefault()")}}前,都需要检查 cancelable 属性的值。

+ +

大部分由用户与页面交互产生的原生浏览器事件都可以被取消。取消{{event("click")}},{{event("scroll")}} 或 {{event("beforeunload")}} 事件将分别阻止用户点击某些元素,滚动页面或跳离页面。

+ +

使用其它 JavaScript 代码创建的 Custom events ,可以在初始化事件的时候控制该事件是否可以被取消。

+ +

语法

+ +
bool = event.cancelable;
+ +

+ +

返回结果为 {{domxref("Boolean")}},如果事件可以被取消将返回 true。

+ +

示例

+ +

例如,浏览器厂商提议 {{event("wheel")}} 事件只能在事件监听回调第一次执行时被取消,接下来的 wheel 事件都不能被取消。

+ +
function preventScrollWheel(event) {
+  if (typeof event.cancelable !== 'boolean' || event.cancelable) {
+    // The event can be canceled, so we do so.
+    event.preventDefault();
+  } else {
+    // The event cannot be canceled, so it is not safe
+    // to call preventDefault() on it.
+    console.warn(`The following event couldn't be canceled:`);
+    console.dir(event);
+  }
+}
+
+document.addEventListener('wheel', preventScrollWheel);
+ +

备注

+ +

事件能否被取消取决于该事件初始化时的状态。

+ +

要取消一个事件的默认行为,可以调用该事件的 preventDefault()方法。与该事件关联的默认行为仍将会保留。

+ +

规范

+ + + + + + + + + + + + + + + + + + + + + +
规范状态备注
{{SpecName('DOM WHATWG', '#dom-event-cancelable', 'Event.cancelable')}}{{ Spec2('DOM WHATWG') }}
{{SpecName('DOM2 Events', '#Events-Event-canCancel', 'Event.cancelable')}}{{ Spec2('DOM2 Events') }}Initial definition.
+ +

浏览器兼容性

+ +

{{Compat("api.Event.cancelable")}}

-- cgit v1.2.3-54-g00ecf