1

我正在尝试使用 Dotnetbrowser 1.11 执行 iframe 文档中的 javascript。

在以下代码中,returnValue.IsFunction() 返回 false。

JSValue returnValue = browser.ExecuteJavaScriptAndReturnValue(FunctionName);

if (returnValue.IsFunction){//something}

如果脚本在当前加载的文档中,则 ExecuteJavaScript 可以正常工作。但是,当脚本加载到当前加载文档中的 iframe 文档中时,找不到相同的内容。

请协助处理相同的问题。

4

1 回答 1

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。

于 2017-11-07T10:14:52.590 回答