很久以前就在思考,能不能讓網站記住密碼對整個電腦的所有瀏覽器都有效。不過很快就否定了,畢竟每個瀏覽器都運行在完全獨立的環境裡,除非像QQ自動登入那樣,通過外掛程式來實現。
不過最近遇到個問題,非得解決這不可。
由於網站的部分使用者是通過程式內嵌瀏覽器訪問的,用過Webbrowser控制項的童鞋都知道,不管系統ie版本有多高,內嵌網頁始終用ie7的核心(除非系統只有ie6)。
就出現大麻煩了:在內嵌網頁裡登入後,雖然之後的頁面轉跳確實還能夠識別cookie。不過當程式彈出網頁時,情況就大不一樣了。彈出來的是系統預設的瀏覽器,未必就是ie7的核心,甚至根本就不是ie瀏覽器!於是就出現使用者未登入的情況了。
要解決此問題,似乎唯一的方法就是彈出url的時候,加上類似cookie的session值。就像從QQ裡點出郵箱,微博之類的,總是帶著一串眼花繚亂的亂碼,作為認證。
不過,為了能簡單的解決此問題,並且不汙染那簡短的網址,決定使用個可以在系統全域儲存變數的方法。那就喚出萬能的flash來解決吧~~
用上flash外援,一切難題都迎刃而解了~ FP很早的版本裡就有個叫SharedObject的東東,可以在整個系統,不對,是整個網路裡,共用資料!不過我們現在沒必要資料遠程共用,只做本地共用就可以了。
SharedObject的使用非常簡單,因為沒有到期時間這玩意,所以比操作cookie還容易。這裡就不累述了~
AS和JS兩部分的代碼都非常簡單,基本的互動而已,已封裝成GlobalCookie.js外掛程式。想體驗下所有瀏覽器共用資料的感覺:
http://www.etherdream.com/FunnyScript/GlobalCookie/
(不過有個詭異的是,最新版的Chrome瀏覽器突然失效了~ Maxthon的Webikit倒是沒問題。。。)
雖然這外掛程式很簡單沒任何技術含量。不過使用這種思路,共用全域資料的模式,可以使很多Web的體驗大幅改進了。
例如開多個瀏覽器逛論壇刷微博,很是消耗伺服器資源。通過全域的資料共用,相同的資料只需傳輸一份,到用戶端之後再相互分配協調。
說完了全域的共用,要是能全域發送訊息,相互連知就更完美了。事實上仍是可以實現的,使用flash的LocalConnection對象即可!詳情請聽下回分解。