--- title: Event attributes slug: Learn/JavaScript/Building_blocks/Events translation_of: >- Learn/JavaScript/Building_blocks/Events#Inline_event_handlers_%E2%80%94_don%27t_use_these translation_of_original: Web/Guide/HTML/Event_attributes original_slug: Web/Guide/HTML/Event_attributes ---
每一個 HTML 元素都可以放置事件屬性,以藉此於事件發生時能執行 JavaScripte 程式。事件屬性的名稱都有一個前綴「on」,例如當使用者點選元素時要執行指定的 JavaScript,可以使用 onclick 屬性並把要執行的 JavaScript 當成屬性值。
In the JavaScript code executed in response to the event, this is bound to the HTML element and the {{domxref("Event")}} object can be reached using the event variable in the scope of the attribute.
Warning: These attributes should be avoided. This makes the markup bigger and less readable. Concerns of content/structure and behavior are not well-separated, making a bug harder to find. Furthermore, usage of event attributes almost always causes scripts to expose global functions on the {{domxref("Window")}} object, polluting the global namespace.
While these attributes can at times be attractively easy to use, you should avoid using them. Instead, use the {{domxref("EventTarget.addEventListener()")}} function to add a listener for the event.
Event attributes can be blocked by using Content Security Policy which if used, blocks all inline scripts unless the 'unsafe-inline' keyword is used.
This example appends text to an element each time time the {{HTMLElement("div")}} is clicked.
Note: This is an example of how not to do things, using one of these attributes.
<!doctype html>
<html>
<head>
<title>Event Attribute Example</title>
<script>
function doSomething() {
document.getElementById("thanks").innerHTML += "<p>Thanks for clicking!</p>";
}
</script>
</head>
<body>
<div onclick="doSomething();">Click me!</div>
<div id="thanks"></div>
</body>
</html>
Try this example below:
{{ EmbedLiveSample('Example_using_event_attributes', '', '', '') }}
Instead, you should use {{domxref("EventTarget.addEventListener()")}}, as shown here:
<!doctype html>
<html>
<head>
<title>Event Attribute Example</title>
<script>
function doSomething() {
document.getElementById("thanks").innerHTML += "<p>Thanks for clicking!</p>";
}
// Called when the page is done loading; this is where we do any setup we need,
// such as creating event listeners for the elements in the page.
function setup() {
document.getElementById("click").addEventListener("click", doSomething, true);
}
// Install an event handler on the window to receive the "load" event, which
// indicates that the document has finished loading into the window.
window.addEventListener("load", setup, true);
</script>
</head>
<body>
<div id="click">Click me!</div>
<div id="thanks"></div>
</body>
</html>
You can see this in action below:
{{ EmbedLiveSample('Example_using_event_listeners', '', '', '') }}