2016-01-26 70 views
3

我的頁面使用在客戶端編譯的較少文件。我想在頁面加載完成後加載其中一些文件。減去:加載文檔後加載的文件上的`modifyVars`

我嘗試了「少於瀏覽器」的方式,但它似乎只適用於最初在頁面的head部分聲明的文件。我稍後添加的聲明(來自Javascript)不被處理... Less ...

我嘗試的另一種方法是「程序化使用」,但在這種情況下,我必須自己注入CSS代碼。這意味着我不能再使用less.modifyVars()來更改樣式(或者我必須自己觸發重新編譯,然後替換生成的CSS,這是我想要避免的)。

我喜歡第一種方式,但我不知道如何在頁面完成初始加載後加載文件。也許有一個函數來加載較少的文件?

謝謝!

+0

請你可以進一步解釋你的用例嗎?爲什麼要在html文檔加載完成後加載一些樣式規則? – Rounin

+0

@Rounin,我有一個單一的頁面應用程序,而不是一個經典的網站。它的一些部分是可選的,並在執行過程中加載。此外,樣式應該可以改變,而無需重新啓動應用程序。 – Andrej

+0

啊,好吧。並且它不工作有類似.state1 h2 {color:rgb(255,255,255);} .state2 h2 {color:rgb(255,255,0);} .state3 h2 {color:rgb(255,0,0) ;}等? – Rounin

回答

2

我想我找到了解決辦法:

less.registerStylesheets().then(
     function() { 
      less.refresh(); 
     } 
); 

第一功能重讀聲明。第二個將重新編譯所有文件(實際上不是很好)。

+1

至於「也許有一個函數來加載較少的文件?」。不,實際上並不是庫在操作瀏覽器中的樣式或樣式表。但是由於您已經在瀏覽器腳本領域,編寫一個腳本來完成您需要的所有功能並不是問題。請參閱http://stackoverflow.com/a/25325750。 –