亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

頁(yè)面中千萬(wàn)不要給變量起名top!一次艱難的Debug之路

Ryan_Li / 1557人閱讀

摘要:在瀏覽器中,指代一個(gè)對(duì)象,始終指向最高層框架,也就是瀏覽器窗口。當(dāng)頁(yè)面中存在框架時(shí),從出發(fā),可以幫助很快得找到想要引用的框架。如果頁(yè)面不包含框架,即最外層就是唯一的窗口,此時(shí)是的一個(gè)屬性,指向本身。也就是,給定義的事件也會(huì)執(zhí)行。

問(wèn)題

今天幫人家修Bug,頁(yè)面大體是這樣:有四個(gè)按鈕,對(duì)應(yīng)上下左右四個(gè)方向,點(diǎn)擊哪個(gè)就使頁(yè)面上的某個(gè)元素向相應(yīng)方向移動(dòng)。這本來(lái)是個(gè)很簡(jiǎn)單的頁(yè)面;
代碼大體如下:

html

top
bottom
left

每一個(gè)onclick事件中本來(lái)是有更多的代碼的,但是最后找bug找瘋掉了,不斷的刪掉代碼,刪到這個(gè)樣子,問(wèn)題還是存在:無(wú)論點(diǎn)擊哪個(gè),"top"也會(huì)被彈出,也就是說(shuō),toponclick也被觸發(fā)了!

錯(cuò)誤定位

萬(wàn)般無(wú)奈之下,只好試試彈出top到底是啥,一看到結(jié)果一下子就想到什么原因了。

在瀏覽器中,top指代一個(gè)對(duì)象,始終指向最高層框架,也就是瀏覽器窗口。
1. 當(dāng)頁(yè)面中存在框架時(shí),從top出發(fā),可以幫助很快得找到想要引用的框架。
2. 如果頁(yè)面不包含框架,即最外層window就是唯一的window窗口,此時(shí)topwindow的一個(gè)屬性,指向window本身。

javascripttop == window.top;//true
top == window;//true
window == window.top;//true

然而!然而我們是可以給top賦值的,雖然這樣的操作是無(wú)效的,原來(lái)top引用的窗口對(duì)象并不會(huì)被覆蓋,但是瀏覽器也并不會(huì)報(bào)錯(cuò)?。ㄋ云鋵?shí)能讓瀏覽拋出異常的錯(cuò)誤一般來(lái)說(shuō)是比較好修正的,因?yàn)樘崾镜腻e(cuò)誤信息已經(jīng)能指明問(wèn)題所在了。)

錯(cuò)誤原因

這樣之前那個(gè)頁(yè)面的問(wèn)題就很清楚了,點(diǎn)擊了任何div后,最終事件都會(huì)冒泡到window窗口上。也就是,給top定義的onclick事件也會(huì)執(zhí)行。

事后回頭想想,debug的思路其實(shí)很清晰的,之前已經(jīng)確定了toponclick事件會(huì)很奇怪的執(zhí)行,那么我們看看top到底是啥,這是個(gè)很自然的思路;也不會(huì)折騰那么久吧。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/91518.html

相關(guān)文章

  • Python 工匠:善用變量來(lái)改善代碼質(zhì)量

    摘要:變量用的好或不好,和代碼質(zhì)量有著非常重要的聯(lián)系。簡(jiǎn)而言之,匈牙利命名法就是把變量的類型縮寫,放到變量名的最前面。很多情況下,使用匈牙利命名法是個(gè)不錯(cuò)的主意,因?yàn)樗梢愿纳颇愕拇a可讀性,尤其在那些變量眾多同一類型多次出現(xiàn)時(shí)。 歡迎大家前往騰訊云+社區(qū),獲取更多騰訊海量技術(shù)實(shí)踐干貨哦~ 本文由鵝廠優(yōu)文發(fā)表于云+社區(qū)專欄作者:朱雷 | 騰訊IEG高級(jí)工程師 『Python 工匠』是什么?...

    seanHai 評(píng)論0 收藏0
  • 支付寶小程序爬坑之路【1】

    摘要:文件名字支付寶頁(yè)面標(biāo)題導(dǎo)航欄背景色是否允許下拉刷新默認(rèn)頁(yè)面是否支持縱向拽拉超出實(shí)際內(nèi)容。請(qǐng)求數(shù)據(jù)請(qǐng)求支付寶的請(qǐng)求是如果需要設(shè)置支付寶為微信是參數(shù)不同如果是請(qǐng)求,需要給的值加上最終為 ①支付寶創(chuàng)建個(gè)人身份 【假如想要變成公司項(xiàng)目的 小程序管理員,千萬(wàn)千萬(wàn)不要變成==自研開(kāi)發(fā)者==】 會(huì)設(shè)置不了的 ②支付寶的緩存機(jī)制 setStorageSync 【設(shè)置本地存儲(chǔ)】 my.setStor...

    Harpsichord1207 評(píng)論0 收藏0
  • css如何實(shí)現(xiàn)n宮格布局?

    摘要:常見(jiàn)應(yīng)用場(chǎng)景現(xiàn)在的界面基本都是大同小異宮格布局現(xiàn)在基本成了每個(gè)必然的存在帶邊框常用在功能導(dǎo)航頁(yè)面無(wú)邊框常用在首頁(yè)分類設(shè)計(jì)目標(biāo)在環(huán)境下通過(guò)實(shí)現(xiàn)宮格并且可以支持有無(wú)邊框和每個(gè)格是否正方形有邊框且每個(gè)格為正方形無(wú)邊框最終效果百分比小技巧先解釋一個(gè) 常見(jiàn)應(yīng)用場(chǎng)景 現(xiàn)在的APP界面基本都是大同小異, 宮格布局現(xiàn)在基本成了每個(gè)APP必然的存在. 帶邊框, 常用在功能導(dǎo)航頁(yè)面 showImg(htt...

    sarva 評(píng)論0 收藏0
  • (css/js)如何起個(gè)好名字

    摘要:就會(huì)給起名表示求和函數(shù),漸漸地知道最好用英語(yǔ)給變量或者是函數(shù)名起名字,盡管有時(shí)候英語(yǔ)不好,那就翻翻有道吧。所以有一段時(shí)間的命名是很長(zhǎng)的兩三個(gè)單詞的駝峰法命名。 什么鬼,又不知道怎么命名class了直接進(jìn)入正文 記得大一學(xué)C語(yǔ)言的時(shí)候,那個(gè)時(shí)候根本沒(méi)把這當(dāng)回事吧。所謂的混沌階段變量名,函數(shù)名,隨意吧,那個(gè)時(shí)候?qū)懞?jiǎn)單地c程序,就好像寫著玩,就算復(fù)雜點(diǎn)得也不過(guò)一二百行,所以變量名什么的,可能...

    Rainie 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<