iframe 的 sandbox 功能...

在「Play safely in sandboxed IFrames」這篇文章提到 HTML5 有對 iframe 制定 sandbox 屬性,這可以讓開發者比較容易處理安全性問題。

比較讓我驚訝是開頭的 browser support 清單是主流全部支援,但又沒寫版號:

不過實際到「Can I use sandbox attribute for iframes?」查,發現沒那麼美好 XD

主要的瀏覽器中,IE 要到 10 才有支援,另外 Firefox 剛支援沒多久 (17 以及之後的版本,目前是 18),看起來要等 Windows 7 的 IE8 被淘汰?

Mozilla Firefox 與 Google Chrome...

我家裡與公司的 Mozilla FirefoxGoogle Chrome 都是在 Ubuntu 上面跑,至於家裡的 Mac Mini 就沒換了,還是跑 Chrome。來講一下我對這兩個瀏覽器的的感覺。

從安裝開始,在 Ubuntu 下面我是透過 ppa 裝 release 前一個 channel (兩個都叫做 beta)。安裝的方式很簡單,設好 ppa 後 apt-get update; apt-get dist-upgrade 就會把系統的 Firefox 與 Chrome 升級到新版。

對於套件的相容性,Firefox 有很明顯的改善,現在從 Release 升級到 Beta 的時候不會直接把所有的套件標成不相容,會有一些機制處理,這方面算是跟 Chrome 有得玩。

另外一方面 Chrome 也支援更多 API 讓套件使用,現在套件可以做很多網路層的操作,接下只要 Chrome 把 UI API 設計完整一點就可以了... (Chrome 上面套件的設定畫面相較於 Firefox 是有需要再改善的,瀏覽器對 UI API 支援太陽春算是原因之一...)

同步的問題因為 Chrome 可以綁定 Google 帳號,就算是 Two-Factor 時也可以用 application password,而 Firefox 的同步功能我試了三次都沒成功過...

效能方面,可以發現兩個瀏覽器的效能都很好了,Twitter 算是 script 很多,可以感覺到比較頓的網站 (參考「bandwidth」這篇),兩個瀏覽器用起來都不會有明顯的不順暢。

操作方面是還是可以感覺到 Firefox 在某些地方卡住:

  • focus 在 Flash 時,Ctrl-W 無法關閉視窗 (因為 Ctrl-W 被 Flash 抓走了)。
  • Firefox 的 Firebug (yeah,跟 Firefox team 無關,但這剛好對應於 Chrome 內建功能) 沒辦法用 Ctrl-W 關閉。
  • 在 address bar 輸入 url 有時會被 suggestion 卡到 lag,這之前有提過了,在 bugzilla 上也有 ticket 在追這個問題...

最後要談的是穩定性,兩者的穩定性都已經可以接受,只是很明顯 Firefox 遇到複雜的 script 還是不太穩,無論是 Facebook 還是 Twitter,偶而會出問題,這時候把 browser 關掉再開就好了...

Firefox 大概還會再用一陣子吧... 算是測試不同的 browser。

跑兩個不同 Profile 的 Chrome

因為 Gmail 沒辦法很方便的切換帳號,所以得想辦法讓 cookie 分開存。

試著找套件來做到這件事情,但都不太好處理... 於是決定跑兩個不同 profile 的 Chrome (這樣 cookie 就會分開存了)。

script 長這樣:

#!/bin/sh
cd $HOME
exec chromium-browser --user-data-dir=.config/chromium-2/ &

留個紀錄起來...

Google Chrome 的 Cookie 隱私功能...

Firefox 裡,我們可以藉由「預設所有的 cookie 都只能是 session only」加上「例外名單」,做出「關閉瀏覽器就把白名單以外的 cookie 清掉」的功能,但在 Google Chrome 裡面,用內建的功能做不到這件事情。(他只能做到關閉時全部清除,沒辦法把白名單清除在外)

剛剛找到一個 extension 實做了這個功能:「Vanilla Cookie Manager」,在每次打開 Google Chrome 時會清除所有白名單以外的 cookie,也算是做到這個功能了... (雖然我比較喜歡在關掉的時候處理)

繼續找 Google Chrome 上對應的套件...

在瀏覽器裡面的「Linux 模擬器」

QEMU 的作者 Fabrice Bellard 寫了一個 javascript-based 的 x86 emulator:「Javascript PC Emulator」,技術細節在「Javascript PC Emulator - Technical Notes」。

其中實做了 486-based CPU,沒有浮點運算能力,另外因為這是 for fun project,所以很多細節沒做 (Linux 開機沒用到的功能都沒做)。以「x86 instruction listings」這邊列出來的指令集,要做到 486 等級,大約 150 條上下?

真是感謝現在的瀏覽器把 javascript 做的這麼快...

YouTube 將 99% PV 影片加上 WebM 支援

YouTube 發了一篇公告,將站上約 30% 的影片另外壓一份 WebM 格式,而這 30% 佔全站 99% pageview:「Mmm mmm good - YouTube videos now served in WebM」。

目前在 Firefox 4+、Opera 10.6+、Google Chrome 支援 WebM 格式,手機平台則是 Android 2.3 (Gingerbread) 支援。

希望有一天可以完全取代 H.264...

Firefox Channel...

Firefox 也打算要加快開發的速度,打算每 18 個星期出一個大版本,同時推出新的 Aurora channel 讓人下載測試:「New Channels for Firefox Rapid Releases」。

以前如果不用 Beta 就得等 Nightly (每天更新),現在中間多了一個 Aurora 讓人選擇。這類似於 Google Chrome 的 Dev-Beta-Stable 模式...

這樣應該可以改善 Firefox 的套件相容性,不用等到 Beta 才開始修... (有時候會在 Nightly 修好後又被揍了一拳 XD)

Bing 與 Google 都使用 HTML5 的 localStorage 加速手機瀏覽速度...

Steve Souders 分析了手機瀏覽 BingGoogle 的手機平台時,這兩個平台如何處理 cache issue:「Storager case study: Bing, Google」。

這兩個平台不約而同都用上 HTML5 的 localStorage,其中 Bing 用了 ~170KB (未壓縮大小) 的 localStorage,內容包括 CSS/JS/JSON,而 Google 也用了 154KB 存放這些資料。

這應該是因為手機平台的 browser cache 共用一塊不大的空間,很容易被 purge:(我的 Desire 跑 Android 2.2,剛剛看設定,預設值是最大值 6MB)

而 localStorage 則是每個 domain 自己一份空間,相對於共用的空間反而更適合當 cache...

補回 Firefox 4 取消的 RSS Icon

Firefox 4 正式版快要放出來了,這陣子開始強迫自己用 Firefox 4,結果覺得奇怪「怎麼這些網站不提供 RSS 啊」,後來才想到很久前有報導提到 Firefox 4 把 RSS icon 拔掉:「Where is the RSS Feed Icon in Firefox 4?」。

這代表一定有人會寫 extension 把 RSS icon 補回去,測過以後看起來「RSS Icon」是個還不錯的選擇,跟之前沒什麼差異...

window 的 hashchange (onhashchange) 事件

hashchange 是 HTML5 event,紀錄一下目前支援的情況:

目前 IE6/IE7 常見的模擬方式是透過 hidden iframe 做類似的效果...

另外在偵測瀏覽器是否有支援 hashchange 可以利用「Detecting event support without browser sniffing」這篇說明的方式偵測是否有支援特定的 event,可以避免使用 browser sniffing。