Maison > développement back-end > C++ > Comment injecter correctement JavaScript dans un document HTML pour éviter «NotSupportEdException»?

Comment injecter correctement JavaScript dans un document HTML pour éviter «NotSupportEdException»?

DDD
Libérer: 2025-01-26 21:21:09
original
272 Les gens l'ont consulté

How to Correctly Inject JavaScript into an HTML Document to Avoid `NotSupportedException`?

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>
Copier après la connexion

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>
Copier après la connexion

Explication

  1. Récupérez l'élément head du document.
  2. Créez un nouvel élément de script.
  3. Récupérez l'interface IHTMLScriptElement sous-jacente à partir de la propriété DomElement de l'élément de script.
  4. Utilisez le code JavaScript pour définir l'attribut texte de l'élément de script.
  5. Ajoutez un élément de script à l'en-tête du document.
  6. Exécutez une fonction JavaScript depuis l'interface IHTMLScriptElement pour activer le script injecté.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal