0

これは Adob​​e ExtendScript の JavaScript です。基本的に、AppleScript でできるように、ユーザーの設定を保存するためにスクリプトに永続変数が必要ですproperty。私が考えることができる唯一の方法は、スクリプトが自分自身を で上書きすることFile.write()でした。

var MY_PROPERTY = true;

function reassignProperty(propName, propValue) {
    var thisFile = new File($.fileName);

    if (thisFile.open("r")) {
        var myScript = thisFile.read();
        thisFile.close();

        // Look for the property declaration and overwrite with new value
        var searchStr = new RegExp("(var " + propName + " = )" + ".+");
        var newScript = myScript.replace(searchStr, "$1" + propValue + ";");

        thisFile.open("w");
        thisFile.write(newScript);
        thisFile.close();
    }
}

reassignProperty("MY_PROPERTY", "false");

私が知る限り、これはうまくいきました。しかし、それは安全ですか?私の直感では、永続的な変数を保持するためのよりクリーンな方法があるはずですが、存在しない場合は、自己上書きスクリプトに潜在的な問題があるかどうかを知りたいだけです。

4

2 に答える 2

0

私は Adob​​e ExtendScript に詳しくありませんが、通常、ユーザーの設定を別のファイルに保存し、プログラムの起動時にそのファイルを読み取ります。

于 2011-04-01T18:30:04.410 に答える
0

プログラムがそれ自体を置き換える機能を含めることは、ほぼ間違いなく悪い設計上の決定になるでしょう。まず、現在の実行スレッドが実行されているはずのファイルとは異なるため、問題が発生するため、間違いなく副作用が発生します。

基本的にあなたは混乱を求めていますが、混乱は悪いことです。外部ファイルを使用してデータを保存するか、HTML の変数またはフィールドに情報を保持する必要があります。

于 2011-04-01T19:06:42.457 に答える