ASP.NET中彈出窗口常見的封殺方式有哪些,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
站在用戶的角度思考問題,與客戶深入溝通,找到靈山網(wǎng)站設(shè)計與靈山網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗,讓設(shè)計與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗好的作品,建站類型包括:成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣、申請域名、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋靈山地區(qū)。
ASP.NET中彈出窗口常見的封殺方式有哪些呢
ASP.NET中彈出窗口封殺之1、基于窗口標(biāo)題的封殺方式
這種封殺方式的原理是定時檢查所有的IE窗口標(biāo)題,然后于已經(jīng)有的列表(由程序維護的一個數(shù)組列表)來比較,如果有相同的,我們就關(guān)閉這個窗口。顯然,這種方式有著諸多缺陷,它封殺了所有的彈出的窗口,管得太死,在程序真正使用的很少。不過,依據(jù)它進行的變形方式倒使用得相當(dāng)?shù)钠毡?。那就是,基于窗口?biāo)題名稱的智能過濾技術(shù),它根據(jù)彈出窗口的標(biāo)題是否含有關(guān)于廣告的關(guān)鍵字進行封殺,這為提高過濾效果作出了很好的探索。
ASP.NET中彈出窗口封殺之2、基于窗口類和位置的封殺方式
經(jīng)過分析發(fā)現(xiàn)正常瀏覽窗口的類名是IEFRAME和CabinetWClass,而廣告窗口的類名是CabinetWClass。進一步分析發(fā)現(xiàn):廣告窗口的WorkerA類和Shell DocObject View類的rect.top的值是相同的,正常IE窗口的WorkerA類和Shell DocObject View類的rect.top的值是不相同的。根據(jù)以上兩點就可以書寫廣告殺手程序了。 事實上,我對此程序的通用性持懷疑態(tài)度。因為筆者用Spy++分析發(fā)現(xiàn),在Windows2000( 筆者使用的操作系統(tǒng))中,IE窗口的類都為IEFrame。同時,由于Win2000是一個基于Unicode代碼的操作系統(tǒng),所以沒有WorkerA類,而以WorkerW類取而代之。同時,也不存在rect.top不相同的情況,由于筆者沒有WindowsXP操作系統(tǒng),所以不能針對WindowsXP作進一步的試驗。
ASP.NET中彈出窗口封殺之3、基于IE COM組件的封殺方式
以上兩種方式都是把IE窗口當(dāng)作一個普通的Windows窗口對待,進行判斷的。事實上,IE是一個典型的基于COM組件的瀏覽器,所有的基于IE內(nèi)核的瀏覽器都是包裝shdocvw.dll文件,然后書寫相應(yīng)的BHO代碼。只有這樣才能做到真正的控制IE瀏覽器,而不是方法一、二這樣的隔靴搔癢。
還有一種基于IE內(nèi)核的彈出窗口封殺方法。它可以在彈出窗口打開之前加以攔截。其原理是:每當(dāng)IE打開一個新的窗口時候都會觸發(fā)NewWindow事件,執(zhí)行OnNewWindow2([out] IDispatch*, [out] BOOL *bCancel)方法。重載此方法,判斷打開新窗口事件是否發(fā)生在瀏覽頁面已經(jīng)下載完畢之后。如果是,說明是正常的彈出窗口,反之加以攔截。
由于Gosurf這樣的瀏覽器本身就重載了Shocvm.dll組件,所以使用第三種方法就自然成了順理成章的事。然而在使用過程中有時也會發(fā)現(xiàn),廣告過濾不很***,但原理基本如此。
ASP.NET中彈出窗口常見的封殺方式就向你介紹到這里,希望這樣的介紹對你有所幫助。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。