Saya mempunyai kawasan pengepala pada halaman web saya yang mempunyai beberapa imej latar belakang yang melingkar melaluinya.
Ia adalah peleraian yang agak tinggi dan berada di atas lipatan jadi saya tidak mahu penyemak imbas mula memuatkan sebarang imej selain daripada yang pertama.
Tapi nak juga randomkan susunan gambar.
Masalahnya ialah saya menggunakan hos web statik (Netlify).
Beberapa pendekatan yang saya pertimbangkan:
Apa yang saya mahu lakukan ialah menjalankan beberapa kod JS, menjalankan beberapa logik pendek dan menambah beberapa penanda pada strim sebelum penyemak imbas melihat keseluruhan respons HTML. Saya kemudiannya boleh menyediakan pesanan standard dalam untuk orang yang telah mematikan JS dan enjin carian yang tidak mahu menjalankan JS.
Saya dapati itulah yang document.write
lakukan, bukan?
Semua sumber kata elak macam tulah document.write
. Tetapi saya tertanya-tanya sama ada ini adalah kes penggunaan sah yang jarang berlaku?
<html> <body> <p>This seems to work, and I kind of think it's not a terrible idea.</p> <script type="application/javascript"> // Standard Fisher-Yates shuffle; not relevant function shuffle(array) { let i = array.length, j; while (i != 0) { j = Math.floor(Math.random() * i); i--; [array[i], array[j]] = [array[j], array[i]]; } return array; } const paras = [ "<p>para 1</p>", "<p>para 2</p>", "<p>para 3</p>", "<p>para 4</p>", ]; shuffle(paras); document.write(paras.join("")); </script> <noscript> <p>para 1</p> <p>para 2</p> <p>para 3</p> <p>para 4</p> </noscript> <p>Change my mind.</p> </body> </html>
Adakah ini idea yang tidak baik? kenapa? Adakah terdapat cara yang lebih baik untuk mencapai hasrat saya?
Ya, itu bukan idea yang bagus. Kaedah ini sangat lama dan mempunyai tingkah laku khusus yang mungkin berbeza dari penyemak imbas ke penyemak imbas. Lihat https://developer.mozilla.org/en- US/docs/Web/API/Document/write untuk mendapatkan maklumat lanjut.
Hanya guna kaedah moden seperti:
Tunggu. Susun elemen secara rawak kerana ini adalah selamat pemapar/pelayar.
Satu cadangan untuk kes penggunaan khusus anda walaupun: penyemak imbas perlu memuatkan JavaScript terlebih dahulu agar ia berfungsi seperti yang anda mahu, tetapi itu mungkin tidak berlaku. Imej mungkin masih dimuatkan dalam susunan asalnya muncul dalam sumber HTML. Saya akan mengesyorkan memindahkan logik ini ke pelayan jika boleh. Akhirnya, mana-mana Javascript mungkin tidak berfungsi untuk kes penggunaan anda. Anda mungkin tidak memasukkan imej dalam dokumen itu sendiri dan menambahkannya melalui JS (pada beban rawak), yang akan menjadi pendekatan pilihan saya.