2013-11-24 36 views
0

我只是做了一些測試,如果我按照下面說明的方式添加腳本,它似乎可以在大多數現代主流瀏覽器中執行。它在頁面加載之前執行,我想知道這是否適用於所有瀏覽器(包括歷史)?在Doctype聲明之前添加腳本標記

<script type="text/javascript"> 
alert("hello world"); 
</script> 

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
</head> 
<body> 
</body> 
</html> 

我當然想找到一種方法來執行腳本任何它被加載之前設置頁面了...爲此任何輸入將不勝感激。使用這種方法會不對?

在此先感謝您的幫助!

+0

在解析任何文檔之前,你想要執行什麼操作? – plalx

+1

你想解決什麼問題? (爲什麼你使用XHTML文檔類型和''標籤,然後聲明內容類型爲HTML?) – Pointy

+2

這將使IE瀏覽器進入怪癖模式,我懷疑你想在IE5.5中運行你的頁面:)。 – Teemu

回答

1

您在評論中提到您要在顯示頁面之前隱藏/顯示元素,而onload速度太慢。嘗試使用DOMContentLoaded,而不是在HTML DOM構建完成後觸發,但在加載所有圖像CSS和其他外部參考之前立即觸發。

這一直對我有用 - 儘管我使用jQuery的ready事件來使它跨瀏覽器工作。它保持你的HTML有效。

2

按照specs

在HTML語法一個符合文檔必須由下列 部件,在以下順序

  1. 可選地,一個單獨的U + FEFF BYTE ORDER MARK(BOM)字符。
  2. 任意數量的評論和空格字符。
  3. 文檔類型
  4. 任意數量的評論和空格字符。
  5. 一個html元素及其屬性(如果有)及其內容(如果有的話)。

瀏覽器符合這些規格,和你的代碼(即使現在的工作)可能會在未來突破,因爲 它清楚地破壞了元素的順序規則。其次,load the scripts last幾乎總是更好的性能增益。

3

該腳本得到執行,但標記(DOCTYPE字符串前的任何元素)會將一些瀏覽器放到quirks mode,這意味着有大量記錄不完善的怪癖和混亂。

所以無論你的理由是什麼,你至少應該把元素放在第一個語法上正確的位置,即在<head>標籤之後。與將其放置在文檔的開始處相比,這無關緊要。

安置是否解決您的真正問題是完全不同的事情。你應該問一個單獨的問題,清楚地描述問題(而不是假設的解決方案),最好通過一些代碼來說明問題。