Inline JavaScript
Inline JavaScript refers to JavaScript code embedded directly within HTML elements, typically via event handler attributes (e.g., onclick, onload) or the deprecated <script> tag with inline content. While convenient for simple interactions, it is generally discouraged in modern web development due to separation of concerns, maintainability issues, and security risks.
Characteristics & Usage
- Event Handlers: Attributes like
onclick="alert('Hello')"bind behavior directly to DOM elements. - Inline Scripts:
<script>console.log('test');</script>blocks placed directly in HTML. - Data URIs:
javascript:protocols in links or images (e.g.,href="javascript:void(0)").
Security Implications
- XSS Vulnerabilities: Inline scripts are a primary vector for Cross-Site Scripting (XSS) attacks if user input is not properly sanitized.
- CSP Restrictions: Content Security Policy (CSP) headers often block inline JavaScript to mitigate XSS, requiring developers to use external scripts or nonce attributes.
- Separation of Concerns: Mixing logic (JS) with structure (HTML) complicates debugging and maintenance.
Best Practices
- External Scripts: Prefer linking to external
.jsfiles via<script src="...">. - Unobtrusive JavaScript: Use
addEventListenerin external scripts rather than inline attributes. - CSP Compliance: Ensure inline scripts are either removed or explicitly allowed via nonces/hashes if necessary.
Related Concepts
- Content Security Policy
- Cross-Site Scripting (XSS)
- DOM Manipulation
- Unobtrusive JavaScript