gpt4 book ai didi

javascript - CefSharp 从现有的 Javascript 函数中获取结果

转载 作者:行者123 更新时间:2023-11-29 23:09:17 29 4
gpt4 key购买 nike

我试图通过在 Windows 窗体应用程序中使用 CefSharp 从本地 html 页面上的现有 Javascript 函数获取结果。

html页面源码为:

<!DOCTYPE html>
<html>
<body>
<p id="demo">A Paragraph.</p>
<script>
function myFunction() {
document.getElementById("demo").innerHTML = true;
return 1 + 1;
}
</script>
</body>
</html>

我的 C# 代码是:

private void ChromeBrowser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs args)
{
if (!args.IsLoading)
{
string result = RunScriptParamAsync("myFunction").ToString();
}
}

public string RunScriptParamAsync(string scriptName)
{
string script = "";
script = scriptName;
//script = string.Format("(function myFunction() {{ document.getElementById('demo').innerHTML = \"{0}\"; return 1 + 1; }})();", scriptName);
chromeBrowser.EvaluateScriptAsync(script).ContinueWith(x =>
{
var response = x.Result;
if (response.Success && response.Result != null)
{
dynamic result = response.Result;
return ((int)result).ToString();
}
else
{
return string.Empty;
}
});
return string.Empty;
}

如果我使用注释行

//script = string.Format("(function myFunction() {{ document.getElementById('demo').innerHTML = \"{0}\"; return 1 + 1; }})();", scriptName);

然后我得到了正确的结果 (2),但我的想法是使用网页上已经存在的 Javascript 函数。函数内的断点揭示了这一点: enter image description here

我也试过

chromeBrowser.GetMainFrame().EvaluateScriptAsync(script)

但结果相同。

有什么想法吗?

最佳答案

您得到的正是您所要求的,对函数的引用。您需要附加 (); 才能实际执行该函数。

//Will return a IJavascriptCallback, which is effectively a function pointer, which is what you have asked for
await browser.EvaluateScriptAsync("myFunction");

//To execute the function you must append ();
await browser.EvaluateScriptAsync("myFunction();")

关于javascript - CefSharp 从现有的 Javascript 函数中获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54114844/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com