|
| 1 | +const memeImage = document.getElementById('meme-image'); |
| 2 | +const newMemeButton = document.getElementById('new-meme'); |
| 3 | +const downloadMemeButton = document.getElementById('download-meme'); |
| 4 | +const shareMemeButton = document.getElementById('share-meme'); |
| 5 | + |
| 6 | +// Fetch random meme from the API |
| 7 | +async function fetchMeme() { |
| 8 | + try { |
| 9 | + const response = await fetch('https://api.imgflip.com/get_memes'); |
| 10 | + const data = await response.json(); |
| 11 | + const { memes } = data.data; |
| 12 | + const randomMeme = memes[Math.floor(Math.random() * memes.length)]; |
| 13 | + memeImage.src = randomMeme.url; |
| 14 | + } catch (error) { |
| 15 | + console.error('Error fetching meme:', error); |
| 16 | + } |
| 17 | +} |
| 18 | + |
| 19 | +// Download the meme |
| 20 | +const downloadMeme = () => { |
| 21 | + const memeUrl = memeImage.src; |
| 22 | + if (memeUrl) { |
| 23 | + const a = document.createElement('a'); |
| 24 | + a.href = memeUrl; |
| 25 | + a.download = 'meme.jpg'; |
| 26 | + a.click(); |
| 27 | + } |
| 28 | +}; |
| 29 | + |
| 30 | +// Share the meme |
| 31 | +const shareMeme = () => { |
| 32 | + const memeUrl = memeImage.src; |
| 33 | + if (memeUrl) { |
| 34 | + const shareUrl = `https://twitter.com/intent/tweet?url=${encodeURIComponent( |
| 35 | + memeUrl, |
| 36 | + )}`; |
| 37 | + window.open(shareUrl, '_blank'); |
| 38 | + } |
| 39 | +}; |
| 40 | + |
| 41 | +// Event listeners |
| 42 | +newMemeButton.addEventListener('click', fetchMeme); |
| 43 | +downloadMemeButton.addEventListener('click', downloadMeme); |
| 44 | +shareMemeButton.addEventListener('click', shareMeme); |
| 45 | + |
| 46 | +// Load an initial meme on page load |
| 47 | +fetchMeme(); |
0 commit comments