2014-01-07 31 views
3

我正在使用javascript作爲鼠標懸停下拉菜單的舊網站。該菜單在Chrome中正常工作,但在添加之前缺少的<!DOCTYPE html>時停止工作。當聲明DOCTYPE時,Javascript無法在Chrome中工作

據我所知,JavaScript可能過時了,但它確實工作正常,沒有聲明DOCTYPE。有沒有一種快速的方法來修復這個網站而不需要找到一個新的腳本?

<script src="/js/script_menus.js"></script> 
<script src="/js/script_dropdown.js"></script> 

<td><a onMouseOut="MM_swapImgRestore();FW_startTimeout();" 
onMouseOver="window.FW_showMenu(window.fw_menu_1,51,109); 
MM_swapImage('img2','','img/nav_02_over.gif',1);" href="productinfo.html"> 
<img src="img/nav_02.gif" width="102" height="26" name="img2"></a></td> 

更新

我知道這並不能回答這個問題,但我已經決定要殺死這個愚蠢的JavaScript的菜單,並與CSS編寫。因此,手頭的問題將得到解決。

+0

嘗試過渡文檔類型 –

+1

如果它是一箇舊網站,我想HTML5不是文檔的正確文檔類型?嘗試html4過渡文檔類型。 – enguerranws

+1

網站可能會使用一些JS怪癖,這些怪癖只有在沒有給出標準文檔類型時纔會觸發的所謂「怪異模式」中可用。 – ComFreek

回答

4

我會嘗試使用過渡文檔類型,這樣

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
      "http://www.w3.org/TR/html4/loose.dtd"> 

,因爲我猜你的網站有過時的HTML和JavaScript元素,那會給你一個非常鬆散的doctype,讓幾乎所有東西都去

它看起來像你有代碼window.FW_showMenu,我可以很容易地找到有關信息的唯一網站是this one,它看起來像它約兩倍於我(認真)。

它也似乎已經由Dreamweaver生成的,所以我覺得最簡單的事情 這樣做會提供最支持的未來將與jQuery或純CSS下拉菜單

+0

試過了上面的聲明,代碼仍然被破壞。是的,這是舊的。:) –

+0

那麼,如果它沒有doctype的工作,只是離開doctype :) – scrblnrd3

+0

但老實說,我只是用新的下拉菜單替換它 – scrblnrd3

1

來代替它,它通常不是關於JavaScript,但DOM結構。如果不添加任何DOCTYPE,則刪除瀏覽器往往會在改變DOM行爲的怪異模式下工作。如果您不想更改代碼中的任何內容,請嘗試使用HTML4 DOCTYPE transitional,並且如果它仍然不起作用,則不添加任何decleration。 但我建議修改代碼,以便創建與最新DOCTYPE兼容的DOM結構。

+0

聲明過渡性DOCTYPE並沒有解決的情況,而JavaScript是在我的頭上:/ –

+0

@KnocksX你爲什麼要添加DOCTYPE聲明呢? – regulus

+0

我想盡可能地使其符合規範而不會破壞任何內容。例如,它沒有先前指定的字符集,這可能會導致腳本攻擊。只是想盡可能多地消除。 –