2017-11-07 5 views
1

Dotnetbrowser 1.11を使用してiframe文書内にあるjavascriptを実行しようとしています。iframe文書内でjavascriptを実行

次のコードでは、returnValue.IsFunction()はfalseを返します。

JSValue returnValue = browser.ExecuteJavaScriptAndReturnValue(FunctionName);

スクリプトは、現在ロードされた文書である場合ExecuteJavaScriptが正常に動作します(returnValue.IsFunction){//何か}

場合。しかし、スクリプトが、現在ロードされているドキュメントの内部にあるiframeドキュメントにロードされている場合、同じドキュメントは見つかりません。

同じことをお手伝いしてください。

答えて

2

ExecuteJavaScriptAndReturnValue()メソッドには、そのid番号を使用して特定のフレームでJavaScriptコードを実行できるオーバーライドがあります。現在読み込まれているドキュメントの子フレームIDのリストを取得するには、Browser.GetFramesIds()メソッドを使用できます。ここでのコードサンプルは次のとおりです。

browser.FinishLoadingFrameEvent += (s, e) => 
{ 
    if (e.IsMainFrame) 
    { 
     List<long> framesIds = e.Browser.GetFramesIds(); 
     JSValue returnValue = 
      e.Browser.ExecuteJavaScriptAndReturnValue(framesIds.First(), FunctionName); 

     if (returnValue.IsFunction){//something} 
    } 
}; 

リストは、すでにロードされたIDが含まれていますいずれか、Browser.GetFramesIds()は完全にページの読み込み後に使用されるべきであることを考慮してください。

関連する問題