2011-10-04 17 views
2

我使用LessCSS,java和colorbox。 Colorbox有一個css文件。其中一種風格如下:lesscss轉義表達式

.cboxIE6 #cboxMiddleRight { 
    _behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')"); 
} 

它似乎我需要使用轉義字符。當lesscss編譯文件,我得到的錯誤

javax.servlet.ServletException: Parse Error: Syntax Error on line 77 (line 77, column 1) near 
.cboxIE6 #cboxMiddleRight { 
_behavior: expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')"); 
} 

那麼我想這..

.cboxIE6 #cboxMiddleRight { 
    _behavior: ~"expression(this.src = this.src ? this.src : this.currentStyle.backgroundImage.split(\'\"\')[1], this.style.background = \"none\", this.style.filter = \"progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\" + this.src + \", sizingMethod=\'scale\')\")"; 
} 

但。我得到一個錯誤,說我錯過了一個關閉「}」

我不知道如何解決這個問題。當然這很簡單,但我無法解決它。

這裏是java更少的CSS配置(web.xml)中:

<servlet> 
    <servlet-name>less</servlet-name> 
    <servlet-class>com.asual.lesscss.LessServlet</servlet-class> 
    <init-param> 
     <param-name>compress</param-name> 
     <param-value>true</param-value> 
    </init-param> 
    <init-param> 
     <param-name>cache</param-name> 
     <param-value>false</param-value> 
    </init-param> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 


<servlet> 
    <servlet-name>resource</servlet-name> 
    <servlet-class>com.asual.lesscss.ResourceServlet</servlet-class> 
    <load-on-startup>2</load-on-startup> 
</servlet> 

<servlet-mapping> 
    <servlet-name>less</servlet-name> 
    <url-pattern>*.css</url-pattern> 
</servlet-mapping> 

任何想法?

在此先感謝。

回答

4

這對我來說編譯罰款:

.cboxIE6 #cboxMiddleRight { 
    _behavior: ~`this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('"')[1], this.style.background = "none", this.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + this.src + ", sizingMethod='scale')"`; 
} 

,但它也試圖在編譯時執行JavaScript。爲了避免這種情況,你可以添加其他更多的報價:

.cboxIE6 #cboxMiddleRight { 
    _behavior: ~`"\"this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('\\\"')[1], this.style.background = \\\"none\\\", this.style.filter = \\\"progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\\\" + this.src + \\\", sizingMethod='scale')\""`; 
} 

雖然長相醜陋,它編譯成這樣:

.cboxIE6 #cboxMiddleRight { 
    _behavior: "this.src = this.src ? this.src : this.currentStyle.backgroundImage.split('\"')[1], this.style.background = \"none\", this.style.filter = \"progid:DXImageTransform.Microsoft.AlphaImageLoader(src=\" + this.src + \", sizingMethod='scale')"; 
} 
+0

非常感謝。對不起,延誤..太忙了。它很好用(第二種方法) –

+1

只是包裝'〜「表達式(...)」'也適用 – STEEL