Berebut elemen HTML sebelum pelayar cuba memaparkannya. Adakah ini kes penggunaan sah yang jarang berlaku untuk "document.write"?
P粉752290033
P粉752290033 2024-01-10 18:07:41
0
1
479

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:

  • Letakkan elemen ke dalam dokumen seperti biasa, kemudian gunakan Javascript untuk menyoalnya dan rawak pesanannya. Saya keberatan kerana saya rasa penyemak imbas telah mula memuatkan imej pertama yang tiba dalam HTML dan kemudian ia dipindahkan secara rawak ke lokasi lain. Saya mahu mengelakkan situasi ini.
  • Gunakan beberapa kod pelayan untuk rawak. Tetapi saya tidak mahu; Saya tidak akan menjalankan pelayan hanya untuk fungsi ini.
  • Tulis setiap kombinasi yang mungkin, atau sekurang-kurangnya segelintir daripadanya, sebagai fail HTML yang berasingan dan rawak melalui penulisan semula URL dalam fungsi tepi. Ia kelihatan agak kucar-kacir. Saya tidak mahu menggunakan fungsi tepi jika tidak perlu, kerana ia hanya satu lagi kuota yang perlu dibimbangkan.
  • Tulis beberapa logik dalam fungsi tepi untuk memintas respons halaman dan mengubahnya. Walaupun kod itu sendiri akan menjadi lebih bersepah, fail yang disediakan akan menjadi kurang bersepah. Ditambah dengan keengganan yang sama untuk menjalankan fungsi kelebihan.

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

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?

P粉752290033
P粉752290033

membalas semua(1)
P粉349222772

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.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan