這是內聯事件模型(DOM 0級),因此只在其執行範圍內定義的變量將被使用。
以下部分
ping = new Object;
ping.test = '1234';
是在它自己的執行上下文在翻譯時經過的頁面。全局範圍內的代碼將通過this
使用全局對象。
但這裏
<a href="#" onclick="alert(ping.test);">Test</a>
是獨立的執行,而您的瀏覽視圖作爲一個匿名函數。使用
<a href="#" onclick="alert(this);">Test</a>
不會導致我們想要的。該行看到window
,this
實際上被用於內聯事件處理程序使用的當前對象。
因此,除非我們允許通過參考window
來查看ping,否則ping不在此範圍內定義。
<a href="#" onclick="alert(window.ping.test);">Test</a>
現在瀏覽器運行時,它會搶了window
全局變量中(\腳本\)上下文將是相同的this
並有機會獲得到ping.test
可見,在以下瀏覽器
- 谷歌瀏覽器的Mac 12.0.742.112
- Safari瀏覽器5.0.5版(6533.21.1)
- Firefo X的Mac 3.6.18
參考
Mozilla Docs: this keyword
Dom Events: inline model
對我的作品在FF4 – Mrchief
這應該工作,但是很多東西可以改進。 – alex
您還應該指定腳本類型:type =「text/javascript」 –