問題:
如題,就是說alert后出現一個對話框,我沒有點關閉,其他js文件或html會被加載嗎,我遇到一個問題就是在頁面加載時調用一個div的click事件,卻沒有被執行,但是在調用事件前面加上alert('xx');運行后手動關閉提示框click事件就調用成功,為什么,也寫了個sleep函數,但不論sleep多久click事件也不會被執行,那我要怎樣才能自動調用這個click。
解決方法:
將代碼包含在onload中,進行(window.onload())加載。
原理:
首先網頁接你所編寫的代碼順序依次加載,當然有時候也會由於網絡原因導致加載成功的順序有所不同,但基本不會相差太多。
它先加載了你的vote[0],然后這個vote[0]所指向的DOM(也就是你說的DIV)卻沒有被加載並解析,瀏覽器這時候還不認識這個vote[0]是個什么東西。
所以,這個時候瀏覽器會報錯這行代碼,如果你使用瀏覽器的F12功能鍵打開調試器,應該可以看到報錯信息。
如果你希望讓這段代碼加載時直接運行,要考慮執行順序的問題,要么onload再執行,要么把它放到HTML后面去。
而為什么alert之后就好用了呢?因為alert執行的時候,在等待用戶確認的這個過程中,程序是被阻斷的,不會向下執行,但是頁面的加載過程卻不中止,這就相當於頁面加載並解析的時間,被alert給留下來了,如果用戶的手快,而網絡速度很慢的話,同樣也會報錯,並不執行。
js在html中的加載執行順序:http://www.cnblogs.com/lindaWei/archive/2012/04/05/2433454.html http://www.jb51.net/article/36755.htm
onload和jQuery的$(function(){})的執行: http://lgscofield.iteye.com/blog/1884352
JS和C#方法相互調用:http://www.cnblogs.com/lindaWei/archive/2012/04/05/2433385.html