fix: qr
هذا الالتزام موجود في:
ثنائية
android-chrome-192x192.png
Normal file
ثنائية
android-chrome-192x192.png
Normal file
ملف ثنائي غير معروض.
|
بعد العرض: | الارتفاع: | الحجم: 17 KiB |
ثنائية
android-chrome-512x512.png
Normal file
ثنائية
android-chrome-512x512.png
Normal file
ملف ثنائي غير معروض.
|
بعد العرض: | الارتفاع: | الحجم: 43 KiB |
ثنائية
apple-touch-icon.png
Normal file
ثنائية
apple-touch-icon.png
Normal file
ملف ثنائي غير معروض.
|
بعد العرض: | الارتفاع: | الحجم: 15 KiB |
ثنائية
favicon-16x16.png
Normal file
ثنائية
favicon-16x16.png
Normal file
ملف ثنائي غير معروض.
|
بعد العرض: | الارتفاع: | الحجم: 781 B |
ثنائية
favicon-32x32.png
Normal file
ثنائية
favicon-32x32.png
Normal file
ملف ثنائي غير معروض.
|
بعد العرض: | الارتفاع: | الحجم: 1.8 KiB |
ثنائية
favicon.ico
Normal file
ثنائية
favicon.ico
Normal file
ملف ثنائي غير معروض.
|
بعد العرض: | الارتفاع: | الحجم: 15 KiB |
@@ -13,8 +13,12 @@
|
|||||||
<input type="text" id="text-input" class="w-full p-2 mb-4 border rounded" placeholder="Enter text to generate QR code">
|
<input type="text" id="text-input" class="w-full p-2 mb-4 border rounded" placeholder="Enter text to generate QR code">
|
||||||
<button id="generate-btn" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Generate QR Code</button>
|
<button id="generate-btn" class="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">Generate QR Code</button>
|
||||||
<canvas id="qr-code" class="mt-4"></canvas>
|
<canvas id="qr-code" class="mt-4"></canvas>
|
||||||
|
<div id="download-buttons" class="mt-4 hidden">
|
||||||
|
<button id="download-svg" class="bg-green-500 hover:bg-green-700 text-white font-bold py-2 px-4 rounded">Download SVG</button>
|
||||||
|
<button id="download-png" class="bg-yellow-500 hover:bg-yellow-700 text-white font-bold py-2 px-4 rounded">Download PNG</button>
|
||||||
</div>
|
</div>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/qrcode@1.5.1/build/qrcode.min.js"></script>
|
</div>
|
||||||
|
<script src="qrcode.min.js"></script>
|
||||||
<script src="script.js"></script>
|
<script src="script.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
7
qrcode.min.js
مباع
Normal file
7
qrcode.min.js
مباع
Normal file
تم حذف اختلاف الملف لأن أحد الأسطر أو أكثر طويلة جداً
63
script.js
63
script.js
@@ -1,24 +1,63 @@
|
|||||||
document.getElementById('generate-btn').addEventListener('click', () => {
|
document.getElementById('generate-btn').addEventListener('click', () => {
|
||||||
const text = document.getElementById('text-input').value;
|
const text = document.getElementById('text-input').value;
|
||||||
const canvas = document.getElementById('qr-code');
|
const canvas = document.getElementById('qr-code');
|
||||||
|
const downloadButtons = document.getElementById('download-buttons');
|
||||||
|
|
||||||
if (text) {
|
if (text) {
|
||||||
QRCode.toCanvas(canvas, text, function (error) {
|
QRCode.toCanvas(canvas, text, function (error) {
|
||||||
if (error) console.error(error);
|
if (error) {
|
||||||
|
console.error(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
console.log('QR code generated!');
|
console.log('QR code generated!');
|
||||||
|
downloadButtons.classList.remove('hidden'); // Show download buttons
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Add QRCode library
|
// Download QR Code as SVG
|
||||||
const script = document.createElement('script');
|
document.getElementById('download-svg').addEventListener('click', () => {
|
||||||
script.src = 'https://cdnjs.cloudflare.com/ajax/libs/qrcode-generator/1.4.4/qrcode.min.js';
|
const text = document.getElementById('text-input').value;
|
||||||
document.body.appendChild(script);
|
if (text) {
|
||||||
|
QRCode.toString(text, { type: 'svg' }, function (error, svg) {
|
||||||
// Register the Service Worker
|
if (error) {
|
||||||
if ('serviceWorker' in navigator) {
|
console.error(error);
|
||||||
window.addEventListener('load', () => {
|
return;
|
||||||
navigator.serviceWorker.register('/sw.js')
|
}
|
||||||
.then(registration => console.log('Service Worker registered:', registration))
|
const blob = new Blob([svg], { type: 'image/svg+xml' });
|
||||||
.catch(error => console.log('Service Worker registration failed:', error));
|
const url = URL.createObjectURL(blob);
|
||||||
|
const link = document.createElement('a');
|
||||||
|
link.href = url;
|
||||||
|
link.download = 'qrcode.svg';
|
||||||
|
document.body.appendChild(link);
|
||||||
|
link.click();
|
||||||
|
document.body.removeChild(link);
|
||||||
|
URL.revokeObjectURL(url);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
// Download QR Code as PNG
|
||||||
|
document.getElementById('download-png').addEventListener('click', () => {
|
||||||
|
const text = document.getElementById('text-input').value;
|
||||||
|
const canvas = document.getElementById('qr-code');
|
||||||
|
|
||||||
|
if (text) {
|
||||||
|
QRCode.toCanvas(canvas, text, function (error) {
|
||||||
|
if (error) {
|
||||||
|
console.error(error);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
canvas.toBlob(function (blob) {
|
||||||
|
const url = URL.createObjectURL(blob);
|
||||||
|
const link = document.createElement('a');
|
||||||
|
link.href = url;
|
||||||
|
link.download = 'qrcode.png';
|
||||||
|
document.body.appendChild(link);
|
||||||
|
link.click();
|
||||||
|
document.body.removeChild(link);
|
||||||
|
URL.revokeObjectURL(url);
|
||||||
|
}, 'image/png');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|||||||
1
site.webmanifest
Normal file
1
site.webmanifest
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
||||||
المرجع في مشكلة جديدة
حظر مستخدم