调用document.GetElementsByTagName(“head”)时出现奇怪的错误
我有一个应用程序,它使用以下代码在WebBrowser
网页中注入JavaScript:
HtmlElement head = document.GetElementsByTagName("head")[0]; HtmlElement scriptEl = document.CreateElement("script"); IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement; element.text = CurrentFuncs; head.AppendChild(scriptEl);
但是我刚收到一个客户的错误报告,该客户在document.GetElementsByTagName("head")[0]
中遇到exceptiondocument.GetElementsByTagName("head")[0]
代码段说:“’0’的值对’index’无效。’index’应该介于0和-1之间。“ 我很确定这是来自那行代码中的[0]
,但不知道为什么。
我假设是因为没有“头”元素。 我刚上传了一个没有头的页面并用我的应用程序打开它,但是错误没有重现。 WebBrowser
自动添加“head”元素。 我甚至尝试上传“.txt”文件但仍然没有错误。 知道为什么会发生这种情况或者如何重现错误?
不幸的是,我不知道错误发生在哪个网页上。
我怀疑你的代码是这样的:
string url = "https://www.google.com"; webBrowser1.Navigate(url); HtmlDocument document = webBrowser1.Document; HtmlElement head = document.GetElementsByTagName("head")[0]; HtmlElement scriptEl = document.CreateElement("script"); mshtml.IHTMLScriptElement element = (mshtml.IHTMLScriptElement)scriptEl.DomElement; element.text = "alert('1');"; head.AppendChild(scriptEl);
问题是在Navigate之后,文档尚未加载。 您需要将访问该文档的代码部分移动到DocumentCompleted处理程序中。
上述就是C#学习教程:调用document.GetElementsByTagName(“head”)时出现奇怪的错误分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
private void Go() { webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted); string url = "https://www.google.com"; webBrowser1.Navigate(url); } void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { HtmlDocument document = webBrowser1.Document; HtmlElement head = document.GetElementsByTagName("head")[0]; HtmlElement scriptEl = document.CreateElement("script"); mshtml.IHTMLScriptElement element = (mshtml.IHTMLScriptElement)scriptEl.DomElement; element.text = "alert('1');"; head.AppendChild(scriptEl); // Code here }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1015010.html