使用CEFSharp编辑

问题描述 投票:0回答:1

我可以像这样在CefSharp中的iFrame中编辑常规文本框:

Browser1.GetBrowser().GetFrame("iFrame1").ExecuteJavaScriptAsync("document.getElementById('ElementID').value=" + '\'' + "1234" + '\'');

但是,因为文本区域没有值:

<iframe id="iFrame1" name="iFrame1">
    <textarea name="txtareaname" id="txtareaname1">sometexthere</textarea>
</iframe>

我无法执行类似的代码行来编辑文本区域中的文本:

textarea.Browser1.GetBrowser().GetFrame("iFrame1").ExecuteJavaScriptAsync("document.getElementById('txtareaname1').value=" + '\'' + "1234" + '\'');

我也尝试过:

textarea.Browser1.GetBrowser().GetFrame("iFrame1").ExecuteJavaScriptAsync("document.getElementById('txtareaname1').innertext=" + '\'' + "1234" + '\'');

如何调整代码以编辑此文本区域?

javascript c# html chromium cefsharp
1个回答
0
投票

OP:但是,由于textarea没有值,所以我无法执行类似的代码行来编辑textarea中的文本。

假设是错误的,设置value属性对于teaxtarea可以正常工作。

[您应该确保包括iframe在内的文档已加载,并使用正确的名称选择了正确的iframe,然后使用正确的id选择了正确的textarea。

示例

这里是一个最小的完整可验证示例,它显示了如何找到iframe并在textarea内设置iframe的值。

为了使示例独立于外部资源并简化验证,我没有使用脚本的src属性初始化iframe,而是使用脚本初始化了iframe

protected override void OnLoad(EventArgs e) {
    base.OnLoad(e);
    var content = new HtmlString(@"
    <!DOCTYPE html>
    <html>
    <body>
    <iframe id=""iFrame1"" name=""iFrame1"" src=""about:blank""></iframe>
    <script>
        var doc = document.getElementById('iFrame1').contentWindow.document;
        doc.open();
        doc.write('<html><head><title></title></head><body>' + 
        'Address:<br>' +
        '<textarea id=""myTextarea"">342 Alvin RoadDucksburg</textarea>' +
        '</body></html>');
        doc.close();
    </script>
    </body>
    </html>
    ");
    var browser = new ChromiumWebBrowser(content)
    { Dock = DockStyle.None, Size = new Size(400, 200), Location = new Point(8, 42) };
    Controls.Add(browser);

    var button = new Button() { Text = "Click Me", Location = new Point(8, 8) };
    Controls.Add(button);
    button.Click += (obj, args) => {
        browser.GetBrowser().GetFrame("iFrame1")
            .ExecuteJavaScriptAsync("document.getElementById('myTextarea').value=" +
            "'Fifth Avenue, New York City'");
    };
}
© www.soinside.com 2019 - 2024. All rights reserved.