Accès aux frames dans le modèle objet de document HTML managé
Mise à jour : novembre 2007
Certains documents HTML sont composés de frames (ou fenêtres) qui peuvent contenir leurs propres documents HTML. L'utilisation de frames facilite la création de pages HTML dans lesquelles une ou plusieurs parties de la page restent statiques (barre de navigation, par exemple) pendant que d'autres frames modifient constamment leur contenu.
Les auteurs de documents HTML peuvent créer des frames selon deux méthodes :
- À l'aide des balises FRAMESET et FRAME, qui permettent de créer des fenêtres fixes.
- ou -
- À l'aide de la balise IFRAME, qui crée une fenêtre flottante pouvant être repositionnée au moment de l'exécution.
Les frames contenant des documents HTML, ils sont représentés dans le modèle DOM (Document Object Model) en tant qu'éléments de fenêtre et éléments de frame.
Lorsque vous accédez à une balise FRAME ou IFRAME via l'utilisation de la collection Frames de HtmlWindow, vous récupérez l'élément de fenêtre correspondant au frame. Cela représente toutes les propriétés dynamiques du frame, telles que son URL actuelle, son document actif et sa taille actuelle.
Lorsque vous accédez à une balise FRAME ou IFRAME via l'utilisation de la propriété WindowFrameElement de HtmlWindow, la collection Children ou encore des méthodes, telles que GetElementsByName ou GetElementById, vous récupérez l'élément de frame. Cela représente les propriétés statiques du frame, y compris l'URL spécifiée dans le fichier HTML d'origine.
Frames et sécurité
L'accès aux frames est rendu plus complexe par l'implémentation, par le modèle DOM HTML managé, d'une mesure de sécurité appelée sécurité des scripts inter-frame. Si un document contient un FRAMESET avec deux FRAME ou davantage dans différents domaines, ces FRAME ne peuvent pas interagir. En d'autres termes, un élément FRAME qui affiche le contenu de votre site Web ne peut pas accéder aux informations contenues dans un FRAME qui héberge un site tiers, tel que http://www.adatum.com/. Cette sécurité est implémentée au niveau de la classe HtmlWindow. Vous pouvez obtenir des informations générales sur un élément FRAME qui héberge un autre site Web (son URL, par exemple), mais vous ne pourrez pas accéder à son Document, ni modifier la taille ou l'emplacement de son élément FRAME ou IFRAME d'hébergement.
Cette règle s'applique également aux fenêtres que vous ouvrez à l'aide des méthodes Open et OpenNew. Si la fenêtre que vous ouvrez se trouve dans un domaine différent de la page hébergée dans le contrôle WebBrowser, vous ne serez pas en mesure de déplacer cette fenêtre ni d'examiner son contenu. Ces restrictions s'appliquent également si vous utilisez le contrôle WebBrowser pour afficher un site Web différent de celui utilisé pour déployer votre application Windows Forms. Si vous utilisez la technologie de déploiement ClickOnce pour installer votre application à partir du site Web A et que vous utilisez WebBrowser pour afficher le site Web B, vous ne serez pas en mesure d'accéder aux données du site Web B.
Pour plus d'informations sur les scripts entre sites, consultez About Cross-Frame Scripting and Security (https://msdn.microsoft.com/library/default.asp?url=/workshop/author/om/xframe\_scripting\_security.asp).