Soy capaz de editar un cuadro de texto regular dentro de un iFrame en CefSharp de este modo:
Browser1.GetBrowser().GetFrame("iFrame1").ExecuteJavaScriptAsync("document.getElementById('ElementID').value=" + '\'' + "1234" + '\'');
Sin embargo, debido a que un área de texto no tiene un valor de:
<iframe id="iFrame1" name="iFrame1">
<textarea name="txtareaname" id="txtareaname1">sometexthere</textarea>
</iframe>
Soy incapaz de ejecutar una línea similar de código para modificar el texto en el área de texto:
textarea.Browser1.GetBrowser().GetFrame("iFrame1").ExecuteJavaScriptAsync("document.getElementById('txtareaname1').value=" + '\'' + "1234" + '\'');
También he intentado:
textarea.Browser1.GetBrowser().GetFrame("iFrame1").ExecuteJavaScriptAsync("document.getElementById('txtareaname1').innertext=" + '\'' + "1234" + '\'');
¿Cómo ajusto mi código para editar esta área de texto?
OP : Sin embargo, debido a que
textarea
no tiene un valor no soy capaz de ejecutar una línea similar de código para modificar el texto en eltextarea
.
La suposición es incorrecta, el establecimiento value
de atributos bien funciona para teaxtarea
.
Usted sólo debe asegurarse de que el documento, incluyendo el iframe se ha cargado y se ha seleccionado el iframe correcta utilizando el nombre correcto y después de haber seleccionado la correcta área de texto utilizando Identificación correcta.
Ejemplo
Aquí es un ejemplo mínimo verificable completo que muestra cómo se puede encontrar el iframe
y establecer el valor de un textarea
interior de la iframe
.
Para que el ejemplo sea independiente de las fuentes de externos y hacer más fácil la verificación, en lugar de inicialización iframe utilizando su src
atributo, he inicializado iframe
mediante secuencias de comandos.
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'");
};
}