次のことを実行できる.NETライブラリ/コンポーネントを探しています。
- Webページをロードする
- リンクされたJSを実行する
- ページのスコープで自分のJSを実行し、実行結果を返します。これは、複雑なオブジェクトまたはオブジェクトの配列である可能性があります。
私がこれまでに見つけた唯一の解決策はWebBrowserオブジェクトを使用することですが、すべてを機能させるにはボイラープレートコードのかなりのチャンクが必要であり、オブジェクトの配列では機能しません。次のコードサンプルでは、RuntimeBinderExceptionを受け取りますdynamic val = o.a;
class Program
{
[STAThread]
static void Main(string[] args)
{
var t = new System.Threading.Thread(BrowserThread);
t.SetApartmentState(System.Threading.ApartmentState.STA);
t.Start();
Console.ReadLine();
}
private static void BrowserThread()
{
var wb = new WebBrowser();
wb.Navigate("http://google.com");
wb.DocumentCompleted += (sender, args) =>
{
var head = wb.Document.GetElementsByTagName("head")[0];
var script = wb.Document.CreateElement("script");
dynamic el = script.DomElement;
el.text = "function test(){return [{a:2},{a:2},{a:2}]}";
head.AppendChild(script);
dynamic result = wb.Document.InvokeScript("test");
dynamic o = result.pop();
dynamic val = o.a;
};
Application.Run();
}
}
誰かが代替ソリューションを提供したり、これを修正するのを手伝ったりできますか?