それは間違いなく可能ですが、少ないソースコードを少し変更する必要がありました(実際に行うことを意図していないことを考えると、これは問題ないと思います:))
誰もが最初にデモを見たいと思っていると思います。ここをクリックしてください:
http://jsfiddle.net/kritzikratzi/BRJXU/1/
(script-window には変更された less.js-source のみが含まれ、関心のあるものはすべて html ウィンドウにあります)
kk、最初に私のパッチについて説明します。使い方は最後にあります。
パッチは 3 つの部分で構成されています
ユーティリティ関数を追加する
less.Overrides = {};
less.Override = function( variableName, value ){
if( !value ){
delete less.Overrides[variableName];
}
else{
less.Overrides[variableName] = value;
}
less.refreshStyles();
};
プロパティをオブジェクトに保存し、そのスタイルを更新することをあまり伝えません。
解析関数を変更する
function parse(str, callback ){
...
var overrides = "\n\n";
for( var key in less.Overrides ){
overrides += key + ": " + less.Overrides[key] + ";\n";
}
str += overrides;
ここで行うことは、オーバーライドされたプロパティをシリアル化し、解析されるすべてのファイルの末尾に追加することだけです。
loadStyles 関数を変更する
if (styles[i].type.match(typePattern) || styles[i].hasAttribute( "lessText" )) {
var lessText;
if( styles[i].hasAttribute( "lessText" ) ){
lessText = styles[i].getAttribute( "lessText" );
}
else{
lessText = styles[i].innerHTML || '';
styles[i].setAttribute( "lessText", lessText );
}
....
デフォルトでは、less は type パラメータを<style type='text/less'>
toに置き換えtype='text/css'
、less-source を忘れました。これを防ぐために、元の less-source が保存およびロードされます。
使い方と結論
<style type="text/less">
@color: green;
#header{ color: @color; }
</style>
<div id="header">i'm the header!</div>
<a href="#" onclick="less.Override('@color', 'red');">make it red</a>
これは私のコンピューターで問題なく動作し、非常にきれいに見えることを認めなければなりません。外部のlessファイルはテストしていません。機能しない場合は、簡単に修正できます。
これを本番環境で使用するのは最善の考えではないとまだ思います(他の人がすでに述べた理由により)。