IE7 與 IE8 上的 :nth-child...

Zite 推薦快兩年前的文章... 在「Poor man’s nth-child selector for IE 7 and 8」看到用 + 來硬幹 nth-child()...

一般是這樣寫:

/* standard nth */
ul.menu li:nth-child(3)
{
    /* styles for the 3rd LI */
}

遇到 IE{7,8} 時可以這樣幹:

/* IE nth */
ul.menu>li + li + li 
{
    /* styles for the 3rd LI */
}

或是:

/* alternate, more specific IE nth */
ul.menu>li:first-child + li + li 
{
    /* styles for the 3rd LI */
}

印象中很久前有看到一堆這類硬幹的技巧,不過都忘光了... 寫一篇記錄下來 XD

新版的 Google Chrome 將會在 Tab 上 Icon 標示發出聲音...

開了一堆頁面,卻找不到放音樂的 tab 是哪個?在新版的 Google Chrome 裡會將正在放音樂的 tab 用動畫標示在 tab 上的 icon:「Chrome Shows Which Tab Is Making a Noise」,像是這樣的提示:

目前在 Canary channel 裡才有,等個幾個月就會在正式版本出現了... (canary -> dev -> beta -> stable)

Opera 換 WebKit...

Opera 決定放棄自己維護 render engine 了,將改用 WebKit:「Opera gears up at 300 million users」。

不確定是什麼樣的考量,我猜是為了省成本順便做的決定。翻了 gs.statcounter.com 的資料,Opera 的全球佔有率愈來愈低,看起來還蠻有可能的?

不過大多數的公司還是不管他吧:

YUI Target Environments

以及:

送出 ooxx HTTP Header 提升安全性...

現在的 browser 支援一堆 HTTP Header 規格,用來防堵各種安全性問題。在「SecureHeaders」看到一包 Ruby Gems,可以針對這堆規格一次搞定,包括了:

就算不是用 Ruby 的人也可以拿文件說明的部份當入口,評估看看系統有哪些地方可以加強。

用 testling-ci 測試各種瀏覽器的結果...

testling-ci 是個測試服務,只要在 package.json 裡把要測的環境要求寫好,然後 GitHub 上的 web hook 設好,剩下就是驗收了...

網站的維護者在「How to write Testling-CI tests」這篇給了一個很簡單的範例,拿一個 IE9+ 才支援的語法實際測試所有的瀏覽器,然後有個 badge 讓你掛:

對於 open source 軟體應該是很方便,是 Travis CI 的另外一個選擇 :p

Nokia 監控使用者連線...

Nokia 被抓到 Xpress Browser 會監控使用者連線,不論是 HTTP 或是 HTTPS:「Nokia Running A Man In The Middle Attack To Decrypt All Your Encrypted Traffic, But Promises Not To Peek」。

兩篇原始發現人的文章,第一篇「Nokia phone forcing traffic through proxy」是講 HTTP 的部份,第二篇「Nokia’s MITM on HTTPS traffic from their phone」是 HTTPS 的部份。

實際運作是類似於 HTTPS proxy 的作法。在「Nokia: Yes, we decrypt your HTTPS data, but don’t worry about it」有詢問 Nokia 後的官方回覆:

"Importantly, the proxy servers do not store the content of web pages visited by our users or any information they enter into them," the company said. "When temporary decryption of HTTPS connections is required on our proxy servers, to transform and deliver users’ content, it is done in a secure manner.

"Nokia has implemented appropriate organizational and technical measures to prevent access to private information. Claims that we would access complete unencrypted information are inaccurate."

GIGAOM 的翻譯簡單多了:

we decrypt your data, but trust us, we don’t peek. (對,我們的確這樣作,不過相信我們,我們沒有監聽。)

你真的相信這鬼話嗎 XDDDDDDDDD

以這張圖結尾:

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 上對應的套件...