0

イベントを含むC#COM DLL( "This.That")があり、JSを使用してテストしましたが、正常に動作します。テストしたすべてのコードをオブジェクト内にラップしようとしています。次の例は正常に機能します。

var oTest = new Test();

function Test()
{
    var oDevice = new ActiveXObject("This.That");

    this.CancelOperation = function()
    {
        try
        {
            oDevice.CancelOperation();
            return "CancelOperation successful.";
        }
        catch (e)
        {
            return e.message;
        }
    };
}

しかし、イベントを追加しようとすると、機能しません。おそらく構文が悪いようです。これがどのように行われるかを説明するリソースをオンラインで見つけることができません。

var oTest = new Test();

function Test()
{
    var oDevice = new ActiveXObject("This.That");

    this.CancelOperation = function()
    {
        try
        {
            oDevice.CancelOperation();
            return "CancelOperation successful.";
        }
        catch (e)
        {
            return e.message;
        }
    };

    oDevice::DeviceStatusUpdate(wasSuccess, message, data) = function()
    {
        document.getElementById("outBox").value += "Success: " + wasSuccess.toString() + "\nMessage: " + message + "\nData:" + data + "\n\n";
    };
}
4

1 に答える 1

0

何かがうまくいきましたが、まだ他の答えを見たいです。これにより、イベント ハンドラーが JS ファイルの外にあり、ドキュメント内に配置されますが、コード自体はまだ JS ファイル内にあります。コードの構成は私の最大の関心事だったので、これは私には受け入れられます。

var oTest = new Test();

function Test()
{
    var oDevice = new ActiveXObject("This.That");

    this.CancelOperation = function()
    {
        try
        {
            oDevice.CancelOperation();
            return "CancelOperation successful.";
        }
        catch (e)
        {
            return e.message;
        }
    };

    this.WireEvents = function()
    {
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.text = 'function oTest.oDevice::DeviceStatusUpdate(wasSuccess, message, data) { document.getElementById("outBox").value += "Success: " + wasSuccess.toString() + "\\nMessage: " + message + "\\nData:" + data + "\\n\\n"; }';
        document.body.appendChild(script);
    };
}
于 2012-11-12T21:45:05.143 に答える