成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

.NET Framework SmartNavigation相關概念解析

開發 后端
.NET Framework SmartNavigation是一個Page中的屬性。作為初學者來說,這篇文章介紹的內容對大家有一個非常大的幫助。

.NET Framework SmartNavigation這個Page屬性很有意思,他在不改動(其實是改動很?。╉撁嬖夭季值那闆r下,居然可以模擬出非常平滑的“無刷新”頁面,為什么這個“無刷新”要闊起來呢?其實他是刷新了的,而且用的也不是什么xmlhttp也不是xmldom技術,它是事實在在的Submit,可能這樣是為了瀏覽器兼容性什么的來考慮的吧。 #t#

SmartNavigation的實現原理,其實和我們在動畫繪制中使用的雙緩沖技術及其相似。首先說一下他對普通頁面的改造,他在普通的.aspx頁面的返回結果中,加了兩行代碼,一個是IFrame,一個是JScript腳本:

  1. < IFRAME ID="__hifSmartNav" 
    NAME="__hifSmartNav" STYLE=
    "display:none"   
  2. src="/aspnet_client/system_web/
    1_1_4322/SmartNav.htm"
    > 
  3. < /IFRAME> 
  4. < script language="JScript" 
    src="/aspnet_client/system_web/
    1_1_4322/SmartNav.js"
    > 
  5. < /script> 

這中間的IFrame(__hifSmartNav)就相當于動畫繪制中的實際繪圖表面,在.NET Framework SmartNavigation中,他就是實際的Submit頁面和數據接收頁面。這一切都是SmartNav.js的杰作,SmartNav.js中使用了一個更有意思的技術,其實是老的不能再老的技術,用現代的話來說就是hook,說遠點和Dos下修改中斷向量有異曲同工之妙。它是怎么做的呢?其實除了顯示輸出,一切的操作都克隆到IFrame里去執行去了,因為IFrame對象,和Document對象有著最大的相似性,包括屬性和事件等。

當我們執行enable了.NET Framework SmartNavigation的頁面時,它首先被SmartNav.js引導,這個腳本中最關鍵的一句就是:var rc = window.__smartNav.attachForm();,他的作用就是把我們當前頁面上的form,包裝到一個叫__smartNav的類中,然后用這個類來操作一切navigate。
這是SmartNav.js中最關鍵最精彩的代碼:

  1. if (snfm.__formAttached == 
    true) return true;   
  2. snfm.__formAttached = true;   
  3. snfm.attachEvent("onsubmit",
     window.__smartNav.init);   
  4. snfmsnfm._submit = snfm.submit;   
  5. snfm.submit = window.__
    smartNav.submit;   
  6. snfm.target = window.__
    smartNav.hifName; 

他完成了form的attach,同時hook了頁面的submit事件,還在最后一句把__smartNav中form的target設定到了__hifSmartNav(這就是隱藏的那個IFrame)。如果不改變target,那么submit就把我們的當前form提交了。

.NET Framework SmartNavigation介紹到這兒已經就沒有什么好說得了,提交是__hifSmartNav執行的,返回的數據也回到了這個IFrame中,剩下的就是把獲得數據寫回到我們本來的那個document中去,那些代碼比較的復雜,處理的情況也挺多,連標題的更新都是考慮到了的,有興趣就自己去讀讀罷。

責任編輯:曹凱 來源: 博客園
相關推薦

2010-01-05 10:29:43

.NET Framew

2010-01-05 16:15:05

.NET Framew

2010-01-06 19:22:43

.NET Framew

2010-01-05 14:04:53

.NET Framew

2010-01-05 14:45:58

.NET Framew

2010-01-05 16:31:45

.NET Framew

2010-01-06 15:43:22

.Net Framew

2010-01-06 10:23:47

.NET Framew

2010-01-19 15:08:18

VB.NET對象成員

2009-08-25 18:16:02

.NET Framew.NET Framew

2010-01-05 18:09:07

.NET Framew

2010-01-06 16:45:42

.Net Framew

2009-12-15 15:55:43

Ruby模塊

2010-01-06 17:02:28

.Net Framew

2009-08-26 14:16:17

C# FrameWor

2010-01-05 16:46:14

學習.NET Fram

2009-12-23 15:27:34

WPF圖形系統

2009-12-28 15:18:29

WPF控件模型

2009-12-28 16:20:50

WPF內嵌樣式

2009-12-29 09:54:27

WPF文字布局
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产黄色在线观看 | 国产97视频在线观看 | 日韩在线不卡 | 在线免费观看黄a | 日韩三 | 亚洲精品99 | 亚洲国产中文字幕 | 日韩视频 中文字幕 | 毛片日韩 | 久久激情网 | 国产一区欧美一区 | 成年人在线观看视频 | 日韩福利视频 | 五月天综合影院 | 美女在线视频一区二区三区 | 欧美日韩在线视频一区二区 | 成人亚洲视频 | 午夜视频在线观看网站 | 色视频欧美 | 成人精品免费 | 亚洲狠狠 | 国产精品欧美一区二区三区不卡 | 狠狠干av | 久久久高清 | 中文一区二区视频 | 亚欧洲精品在线视频免费观看 | 国产精品久久久久久一区二区三区 | 国产激情视频在线 | 九九九视频精品 | 国产视频久久久 | 亚洲国产成人av好男人在线观看 | 岛国毛片 | 欧美精 | 国产成人精品久久二区二区91 | 久久久久久黄 | 欧美色综合网 | 天天干狠狠操 | 国产伦精品一区二区三区在线 | 99re | 国产视频二区在线观看 | 免费人成激情视频在线观看冫 |