2

Javaでjavax.scriptを使用していますが、現在のJavascriptの実装がRhinoであるかどうかを検出できるようにしたいと思います。これを行っているのは、RhinoだけでなくWebページでも正しく機能するようにスクリプトを作成する必要があるためです。

Javascript擬似コード:

function writeMessage(message) {
    if (implementation is Rhino) {
        print(message);
    }
    else if (script is running in a web browser) {
        document.write(message);
    }
}
4

2 に答える 2

5

ああ、コメントにあります。機能検出を使用するだけです。

var writeMessage = document && document.write
  ? document.write.bind(document)
  : print;

そしてwriteMessage(string)、スクリプト全体で使用します。これはの短縮形です

if (document && document.write)
    var writeMessage = function(message) { document.write(message); };
else
    var writeMessage = function(message) { print(message); };

これは、関数が呼び出されるたびに検出が適用される質問で提案したものよりも優れています。

function writeMessage(message) {
    if (document && document.write) { // running in a web browser
        document.write(message);
    } else { // it will be Rhino
        print(message);
    }
}
于 2012-08-05T18:37:51.567 に答える
-2

WebブラウザーまたはRhino上でのみ実行する場合は、相互に排他的です。つまり、スクリプトがブラウザーで実行されていない場合は、 Rhinoを介して実行されています。

于 2012-08-05T18:35:26.693 に答える