Comment injecter du JavaScript dans des documents HTML
En injectant du code JavaScript dans la page Web, des éléments dynamiques peuvent être utilisés pour améliorer les fonctionnalités de la page Web. Cependant, vous pouvez rencontrer des erreurs en utilisant les méthodes HTMLDocument standard. Ce guide propose des solutions à ce problème.
Le problème
L'exemple de code suivant illustre une tentative d'injection de JavaScript dans un document :
<code>string newScript = textBox1.Text; HtmlElement head = browserCtrl.Document.GetElementsByTagName("head")[0]; HtmlElement scriptEl = browserCtrl.Document.CreateElement("script"); lblStatus.Text = scriptEl.GetType().ToString(); scriptEl.SetAttribute("type", "text/javascript"); head.AppendChild(scriptEl); scriptEl.InnerHtml = "function sayHello() { alert('hello') }";</code>
Cependant, l'accès à la propriété InnerHtml de scriptEl lèvera une exception NotSupportedException. Cela indique que le type HtmlElement ne prend pas en charge la définition du code HTML interne pour les éléments de script.
Solution
Pour résoudre ce problème, nous devons accéder à l'interface IHTMLScriptElement sous-jacente. L'extrait de code mis à jour suivant illustre cette approche :
<code>HtmlElement head = webBrowser1.Document.GetElementsByTagName("head")[0]; HtmlElement scriptEl = webBrowser1.Document.CreateElement("script"); IHTMLScriptElement element = (IHTMLScriptElement)scriptEl.DomElement; element.text = "function sayHello() { alert('hello') }"; head.AppendChild(scriptEl); webBrowser1.Document.InvokeScript("sayHello");</code>
Explication
Cette méthode vous permet d'injecter avec succès du JavaScript dans une page Web et d'interagir dynamiquement avec ses éléments.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!