Alternatives to HTML5 iframe srcdoc?

The HTML <iframe> tag is used to create an inline frame. While the srcdoc attribute allows embedding HTML content directly, several alternatives exist for dynamically setting iframe content.

Understanding iframe srcdoc

The srcdoc attribute specifies HTML content to display inside an iframe without requiring an external URL.

<!DOCTYPE html>
<html>
<head>
    <title>iframe srcdoc Example</title>
</head>
<body>
    <iframe srcdoc="<h1>Hello from srcdoc!</h1><p>This content is inline.</p>" width="100%"></iframe>
</body>
</html>

Alternative 1: Using contentWindow.document

Access the iframe's document object directly to write content programmatically.

<!DOCTYPE html>
<html>
<head>
    <title>contentWindow Alternative</title>
</head>
<body>
    <iframe id="demo" width="100%" height="200"></iframe>
    
    <script>
        var iframe = document.getElementById('demo');
        var doc = iframe.contentWindow.document;
        var content = '<html><body><h1>Dynamic Content</h1><p>Added via JavaScript</p></body></html>';
        
        doc.open('text/html', 'replace');
        doc.write(content);
        doc.close();
    </script>
</body>
</html>

Alternative 2: Data URL Approach

Use data URLs to embed HTML content directly in the src attribute.

<!DOCTYPE html>
<html>
<head>
    <title>Data URL Alternative</title>
</head>
<body>
    <iframe id="dataFrame" width="100%" height="200"></iframe>
    
    <script>
        var content = '<h1>Data URL Content</h1><p>Using data: protocol</p>';
        var dataUrl = 'data:text/html;charset=utf-8,' + encodeURIComponent(content);
        
        document.getElementById('dataFrame').src = dataUrl;
    </script>
</body>
</html>

Alternative 3: Blob URL Method

Create a Blob object containing HTML content and use it as the iframe source.

<!DOCTYPE html>
<html>
<head>
    <title>Blob URL Alternative</title>
</head>
<body>
    <iframe id="blobFrame" width="100%" height="200"></iframe>
    
    <script>
        var content = '<html><body><h1>Blob Content</h1><p>Generated from Blob object</p></body></html>';
        var blob = new Blob([content], {type: 'text/html'});
        var blobUrl = URL.createObjectURL(blob);
        
        document.getElementById('blobFrame').src = blobUrl;
    </script>
</body>
</html>

Comparison of Methods

Method Browser Support Use Case Memory Impact
srcdoc IE not supported Static HTML content Low
contentWindow All browsers Dynamic content Low
Data URL All modern browsers Small content Medium
Blob URL Modern browsers Large content Higher

Key Points

Each method has specific advantages:

  • contentWindow: Best cross-browser compatibility
  • Data URL: Simple for small content
  • Blob URL: Efficient for large HTML content

Conclusion

When srcdoc isn't available, use contentWindow.document for maximum compatibility or data/blob URLs for modern browsers. Choose based on your content size and browser support requirements.

Updated on: 2026-03-15T23:18:59+05:30

634 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements