4

私は .NET を に置き換える過程にあり、WebBrowser私が書いているラッパーで実装する方法がわからない でWebKit.NET使用している機能の 1 つは、DOM を渡す機能です。 JavaScript および C# コードとの間の要素。WebBrowserWebKit

a では、 an のプロパティをパラメーターとしてWebBrowser呼び出しInvokeScriptて渡すだけで、JavaScript 関数が要素を取得します。同様に、JavaScript から C# に要素を渡すことができ、C# コードはオブジェクトを取得します。DomElementHtmlElementDomElement

WebKit私が知る限り、私はこれを行うことができません。InvokeStriptMethodメソッドは壊れていますが、壊れていStringByEvaluatingJavaScriptFromStringないため、現在のドキュメントにスクリプトを挿入して、後でいつでも呼び出すことができます。

これらのドキュメントは自分で作成したドキュメントではないことに注意してください。そのため、すべての要素に ID を割り当てるようなことはできません。これは Web スクレーパーであり、ドキュメントの要素をできるだけいじらないようにする必要があります。

おそらく機能するハックの 1 つは、要素に一時 ID を割り当て、古い ID をバックアップしておくことです。次に、GetElementByIdJavaScript または C# から呼び出して要素を取得し、古い要素の ID を再割り当てします。GetAttribute('id')問題は、ID が の場合にWebKitが空の文字列を返すundefinedため、C# コードで ID が空の文字列であるかundefined、現在の Web ページのスクリプトが ID に依存しているかを知る方法がないことです。 ID を空の文字列にundefined設定すると、javascript が台無しになる可能性があります。

誰もがより良いアイデアを持っていますか、それとも私が使用できる他のWebKit方法はありますか?

4

1 に答える 1

0

このライブラリhttps://github.com/douglascrockford/JSON-js を使用して、このコードを使用できます

var json_text = JSON.stringify(your_object, null, 2);

オブジェクトは文字列になりました。これを行うと、文字列をオブジェクトにすることができます

var your_object = JSON.parse(json_text);

文字列を JavaScript から C シャープに渡すことができます。

csharp では fastjason と

var o = fastJSON.JSON.Instance.ToObject<List<Retclass>>(s); // return a generic list

string str = fastJSON.JSON.Instance.ToJSON(obj, 
                 new fastJSON.JSONParamters { EnableAnonymousTypes = true }); // using the parameters

JSONを使用してそれを行うことができます

JSON (JavaScript Object Notation) は、軽量のデータ交換形式です。人間が読み書きするのは簡単です。マシンが解析して生成するのは簡単です。これは、JavaScript プログラミング言語、標準 ECMA-262 第 3 版 - 1999 年 12 月のサブセットに基づいています。JSON は、完全に言語に依存しないテキスト形式ですが、C を含む C ファミリーの言語のプログラマーになじみのある規則を使用します。 、C++、C#、Java、JavaScript、Perl、Python、その他多数。これらの特性により、JSON は理想的なデータ交換言語になります。

http://www.json.org/

http://www.codeproject.com/Articles/159450/fastJSON

于 2013-08-09T19:44:30.320 に答える