2009-11-30 32 views
1

我現在正在問自己,當頁面的頁頭中的javascripts被執行?何時執行JavaScript?

所有內容加載後?在加載圖像期間?加載網站之前?

原因是,我想實施一個屏障來阻止用戶訪問沒有javascript的網站(這是爲了公司內部的使用,不要責怪我的要求) - 我的想法是創建一個div錯誤消息,用javascript隱藏,我的頁面屏幕截圖呈灰色,如果javascript被禁用,也會隱藏。

問題是,這樣的截圖在文件大小方面可能相當大。所以,連接速度很慢,你需要在JavaScript隱藏之前加載整個圖像嗎?!

回答

2

<script>標籤執行(除非他們有defer屬性集),也就是圖像之前,文檔甚至其餘的都被加載。你可能想要做的是包含你希望隱藏在<div id="something" style="display:none">中的圖像,並在頁面及其所有內容(包括截圖圖像)已加載(即在onload處理程序中)或顯然可以也使用addEventListener)。

HTH!

+0

第一個答案真的回答了執行時的問題;-)所以,回顧一下;如果我將標題中的JS重定向,它將在背景圖像加載之前執行?所以這是我的問題的解決方案,只有一個重定向,如果它不起作用,頁面將加載圖像。 – 2009-11-30 09:58:03

+0

是的。重定向(location.href ='...';)將立即執行。 – AKX 2009-11-30 18:20:49

4

爲什麼不直接在<noscript>標記中加入「您必須有javascript」警告?

+0

因爲這並不妨礙用戶使用該網站,無論如何,這是我需要做的。它必須是(至少不用編輯CSS)不可能在沒有JS的情況下使用該站點... – 2009-11-30 09:46:21

+0

無腳本不一定遵循腳本元素,因此您可以將JS放在頭部並仍然在腳本中包含無腳本元素。 – Boldewyn 2009-11-30 09:48:47

+0

'

1

Javascript將取決於您使用的是什麼事件;如果您正在討論onload事件,那麼它會在所有內容加載後運行。

要處理您的問題,您可以創建一個頁面,然後在那裏編寫一些javascript以將其重定向到JavascriptEnabled.html;如果你不能重定向它,你還應該添加一個META REFRESH標籤並將其重定向到JavascriptDisabled.html並顯示一條警告消息。因爲它們是加載HTML頁面的<head>

+0

好點,好主意!我一定會研究這一點。 – 2009-11-30 09:56:48

2

只要瀏覽器看到它,就會執行Javascript中的script標記。但是停止所有其他執行和(可能)下載。因此,您試圖隱藏body中的img,但由於script標記位於head中,所以它將在img加載之前執行,因此它將無法找到它(document.getElementById('#noScriptImage')將失敗)。

另一種選擇是將script標籤放置img後,但隨後有變化,對於幾分之一秒的圖像將是可見的,屏幕輕彈。

+0

非常好理解,現在事情變得更加清晰。 – 2009-11-30 09:59:11