我正在尝试使用Dotnetbrowser 1.11执行iframe文档中的javascript。
在以下代码中,returnValue.IsFunction()返回false。
JSValue returnValue = browser.ExecuteJavaScriptAndReturnValue(FunctionName);
if(returnValue.IsFunction){// something}
如果脚本位于当前加载的文档中,则ExecuteJavaScript可以正常工作。但是当脚本加载到当前加载的文档中的iframe文档中时,找不到相同的文档。
请提供帮助。
答案 0 :(得分: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}
}
};
考虑到完全页面加载后应使用Browser.GetFramesIds(),列表将只包含已加载的ID。