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
DDDoriginal
2025-01-26 21:21:09335parcourir

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>

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

  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!

Déclaration:
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