1

より大きなWPFアプリケーションにIE9Webブラウザーコントロールを組み込んでいます。InvokeScriptJSON文字列を呼び出してパラメータとして渡そうとしています:

webBrowser.InvokeScript("redrawPlot", new object[] { reDrawData });

関数redrawPlotは、jqueryメソッドparseJSONを使用して、これを解析してオブジェクトに戻します。

redrawPlot = function(dataObj) {
        dataObj = $.parseJSON(dataObj);
        ...
}

これをWPFアプリで実行すると、JavaScriptエラーが発生します。

Invalid character

reDrawDataの内容(スクリプトデバッガーとWPFアプリで検査されます)は次のとおりです。

"{\" plot0 \ ":[{\" data \ ":[[1,1111.11111111111]、[2,1111.11111111111]、[3,1111.11111111111]]、\" label \ ":\" A-TOP-6 \ "}]、\" plot1 \ ":[{\" data \ ":[[1,1111.11111111111]、[2,1111.11111111111]、[3,1111.11111111111]]、\" label \ ":\" A-TOP- 6 \ "}]、\" plot2 \ ":[{\" data \ ":[[1,1111.11111111111]、[2,1111.11111111111]、[3,1111.11111111111]]、\" label \ ":\" A- TOP-6 \ "}]、\" plot3 \ ":[{\" data \ ":[[1,1111.11111111111]、[2,1111.11111111111]、[3,1111.11111111111]]、\" label \ ":\" A-TOP-6 \ "}]、\" plot4 \ ":[{\" data \ ":[[1,1111.11111111111]、[2,1111.11111111111]、[3,1111.11111111111]]、\" label \ ": \"A-TOP-6\"}]}」

IE9開発者ツールでこれを実行してその文字列を直接渡すと、エラーは発生しません。

InvokeScriptを正しく呼び出していませんか?

4

1 に答える 1

1

プロパティと文字列を囲む引用符はエスケープされますが、エスケープしないでください。あれは

{\" plot0 \":[{\ "data \":[[1,1111.11111111111]、[2,1111.11111111111]、[3,1111.11111111111]]、\ "label \":\ "A-TOP-6 \" }]、\ "plot1 \":[{\ "data \":[[1,1111.11111111111]、[2,1111.11111111111]、[3,1111.11111111111]]、\ "label \":\ "A-TOP-6 \ "}]、\" plot2 \ ":[{\" data \ ":[[1,1111.11111111111]、[2,1111.11111111111]、[3,1111.11111111111]]、\" label \ ":\" A-TOP -6 \ "}]、\" plot3 \ ":[{\" data \ ":[[1,1111.11111111111]、[2,1111.11111111111]、[3,1111.11111111111]]、\" label \ ":\" A -TOP-6 \ "}]、\" plot4 \ ":[{\" data \ ":[[1,1111.11111111111]、[2,1111.11111111111]、[3,1111.11111111111]]、\" label \ ":\ "A-TOP-6\"}]}

する必要があります

{"plot0":[{"data":[[1,1111.11111111111]、[2,1111.11111111111]、[3,1111.11111111111]]、 "label": "A-TOP-6"}]、 "plot1":[ {"data":[[1,1111.11111111111]、[2,1111.11111111111]、[3,1111.11111111111]]、 "label": "A-TOP-6"}]、 "plot2":[{"data":[ [1,1111.11111111111]、[2,1111.11111111111]、[3,1111.11111111111]]、 "label": "A-TOP-6"}]、 "plot3":[{"data":[[1,1111.11111111111]、 [2,1111.11111111111]、[3,1111.11111111111]]、 "label": "A-TOP-6"}]、 "plot4":[{"data":[[1,1111.11111111111]、[2,1111.11111111111]、 [3,1111.11111111111]]、 "label": "A-TOP-6"}]}

于 2012-11-12T03:39:38.817 に答える