2012-11-04 48 views
1

也許有一個庫已經這樣做了?我能找到的只有在線工具。我想在JavaScript中這樣做的原因是因爲我想知道字符串a > b, aa> b,a相同。如果我可以將它壓縮爲CSS,所有版本都將以相同的字符串結尾。如何壓縮CSS選擇器字符串,使用javascript

更好的解釋爲什麼我試圖這樣做:我爲自己寫了一個jQuery插件來緩存jQuery選擇器(這個東西$('div'))。它的工作原理是存儲一個鍵值對,其中鍵是我的選擇器字符串,值是找到的DOM元素。這就是爲什麼我想比較CSS選擇器字符串,否則我會存儲基本上是相同選擇器的不同鍵。

+0

你是什麼意思的壓縮?爲什麼你想要壓縮選擇器呢? – BoltClock

+1

爲什麼你需要在運行時做到這一點? – zerkms

+3

這聽起來像是你實際上在詢問是否有辦法*爲了比較的目的*選擇器*(或者至少是空白)*。是對的嗎? –

回答

-1

Uglify.js(https://github.com/mishoo/UglifyJS)可以讓你自動壓縮CSS。它將去除所有不必要的空白和評論。這應該允許你規範任何你想要的。您需要查看Uglify源並嘗試提取所需的組件。

當我試驗:http://refresh-sf.com/yui/它似乎總是適當縮小選擇器(儘管這是使用YUI而不是uglifyjs)。唯一剩下的問題是a> b,b和b,a> b之間的差異。爲此,我會建議先進行縮小,然後按','分割;然後按字母順序排列數組;並最終重新加入拆分數組。一旦完成,您可以使用該值作爲散列。

+0

爲什麼要投票? – Parris

+0

因爲所需要的不是縮小或壓縮CSS文件,而是將嵌入在JS代碼中的CSS選擇器標準化,以便兩個選擇器字符串僅在所使用的空白(例如,使用空白)之間被認爲是相同的。 – GregL

+0

@GregL如果你縮小了一塊有效的CSS,它是否會正常化?如果你有額外的空間,它應該刪除所有。在這種情況下壓縮是標準化的。嘗試a> b,{背景:#000; } vs a> b,a vs a> b,http://refresh-sf.com/yui/上的{}。所有的變化應該導致相同的事情。 – Parris