ExplorerCanvas (excanvas.js)
पुराने इंटरनेट एक्सप्लोरर संस्करणों (IE 6-8) में HTML5 <canvas> तत्व का मूल समर्थन नहीं था। ExplorerCanvas (excanvas.js) एक जावास्क्रिप्ट लाइब्रेरी है जो VML (वेक्टर मार्कअप लैंग्वेज) का उपयोग करके इन ब्राउज़र्स में कैनवास कार्यक्षमता जोड़ती है।
उपयोग विधि
कंडीशनल कमेंट्स का उपयोग करके केवल IE 8 और उससे नीचे के लिए लोड करें:
<!--[if lte IE 8]>
<script src="excanvas.js"></script>
<![endif]-->
पूर्ण उदाहरण
<!DOCTYPE html>
<html>
<head>
<title>IE में कैनवास समर्थन</title>
<!--[if lte IE 8]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/excanvas/3/excanvas.min.js"></script>
<![endif]-->
</head>
<body>
<h2>ExplorerCanvas डेमो</h2>
<canvas id="myCanvas" width="300" height="200" style="border:1px solid #000;">
आपका ब्राउज़र कैनवास का समर्थन नहीं करता।
</canvas>
<script>
// excanvas लोड होने तक प्रतीक्षा करें (IE में)
function initCanvas() {
const canvas = document.getElementById('myCanvas');
if (!canvas.getContext) return; // अभी भी समर्थन नहीं
const ctx = canvas.getContext('2d');
// ग्रेडिएंट पृष्ठभूमि
const grad = ctx.createLinearGradient(0, 0, 300, 200);
grad.addColorStop(0, '#667eea');
grad.addColorStop(1, '#764ba2');
ctx.fillStyle = grad;
ctx.fillRect(0, 0, 300, 200);
// कुछ आकृतियाँ
ctx.fillStyle = 'rgba(255,255,255,0.8)';
ctx.fillRect(50, 50, 200, 100);
ctx.fillStyle = '#333';
ctx.font = 'bold 24px Arial';
ctx.textAlign = 'center';
ctx.fillText('Canvas in IE!', 150, 110);
ctx.font = '14px Arial';
ctx.fillText('ExplorerCanvas के साथ', 150, 135);
}
// IE में excanvas असिंक्रोनस रूप से इनिशियलाइज़ होता है
if (typeof G_vmlCanvasManager !== 'undefined') {
G_vmlCanvasManager.init_(document);
// तत्वों को पुनः इनिशियलाइज़ करने की आवश्यकता हो सकती है
setTimeout(initCanvas, 100);
} else {
initCanvas();
}
</script>
</body>
</html>
सीमाएँ और ज्ञात समस्याएँ
| प्रदर्शन | VML रेंडरिंग मूल कैनवास से धीमी है |
| ग्रेडिएंट/पैटर्न | सीमित समर्थन; जटिल ग्रेडिएंट्स काम नहीं कर सकते |
| टेक्स्ट रेंडरिंग | फॉन्ट रेंडरिंग भिन्न हो सकती है; measureText() अविश्वसनीय |
| कंपोजिटिंग | globalCompositeOperation के सीमित मोड |
| छवि डेटा | getImageData()/putImageData() धीमा/सीमित |
| टूडेटाURL | toDataURL() काम नहीं करता (VML को डेटा URL में निर्यात नहीं कर सकता) |
आधुनिक विकल्प
IE समर्थन की आवश्यकता होने पर (विरासत एंटरप्राइज़ वातावरण):
- Polyfill.io: स्वचालित रूप से आवश्यक पॉलीफिल्स सर्व करता है
- Canvas-polyfill: अधिक आधुनिक पॉलीफिल
- आधुनिक ब्राउज़र अपग्रेड: उपयोगकर्ताओं को एज/क्रोम/फायरफॉक्स पर जाने के लिए प्रोत्साहित करें
फीचर डिटेक्शन पैटर्न
// कैनवास समर्थन जांचें
function supportsCanvas() {
const canvas = document.createElement('canvas');
return !!(canvas.getContext && canvas.getContext('2d'));
}
if (!supportsCanvas()) {
// पॉलीफिल लोड करें या फॉलबैक UI दिखाएँ
document.write('<script src="excanvas.js"></script>');
}