2017-05-31 31 views
0

我遇到在Cefsharp中使用EvaluateScriptAsync的問題。我想運行一個JavaScript代碼EvaluateScriptAsync然後,在這完成後,我希望我的代碼繼續工作,但ContinueWith不等待EvaluateScriptAsync完成。這裏是我的代碼,不知道是什麼問題:EvaluateScriptAsync在Cefsharp中等待

private void WebBrowserFrameLoadEnded(object sender, FrameLoadEndEventArgs e) 
{ 
    if (e.Frame.IsMain) 
    { 
     var task = browser.EvaluateScriptAsync("(function() { function xx() { $('body').animate({scrollTop: $('body').prop(\"scrollHeight\")}, 8000, function() { var win = $(window); if ($(document).height() - win.height() == win.scrollTop()) { return true; } else { xx(); } }); }; xx(); })();"); 

     task.ContinueWith(taskHtml => 
     { 
      if (taskHtml.IsCompleted) 
      { 
       /* Some code working */ 
      } 
      this.DialogResult = DialogResult.OK; 
     }); 
    } 
} 
+0

您還沒有檢查腳本是否成功執行,請檢查任務結果 – amaitland

+0

@amaitland腳本正在工作,我已檢查過它。 – YSFKBDY

+0

請更新您的代碼以顯示您檢查響應的位置。 – amaitland

回答

-1

你應該使用瀏覽器選項卡控件的ExecuteSciptAsyc()方法。

1您必須先獲取當前標籤頁控件,然後從瀏覽器控件中調用ExecuteSciptAsyc()方法。

var control = GetCurrentTabControl(); control.Browser.ExecuteScriptAsync(「alert('It's Working')」);