J'ai une page HTML + javascript qui incorpore une page dans un iframe. Je voudrais être en mesure de déclencher un bouton de soumission (qui provoque un POST) dans la page incorporée en utilisant javascript dans la page d'accompagnement. Y a-t-il une bibliothèque qui le fait déjà?Déclenchement des boutons dans l'iframe contenu
Répondre
Si les hôtes IFRAME
une page dans le même domaine, on peut dire
// To trigger from the enclosing page
var yourFrame = document.getElementById("iframeId");
if(yourFrame.contentDocument) {
yourFrame.contentDocument.getElementById("formId").submit(); // FF, etc
} else {
yourFrame.contentWindow.document.getElementById("formId").submit(); // IE
}
// To trigger from the enclosed page
document.getElementById("formId").submit();
... où iframeId
est l'ID de l'iframe, et formId
est l'ID de la forme à l'intérieur du iframe, quelque chose comme
A l'intérieur du document:
<iframe id="iframeId" src="/somePage.html" ... >
A l'intérieur du document à "somePage.html
":
<form id="formId" method="post" action="...">
Notez que si le IFRAME
organise une page dans un autre domaine, alors si vous essayez de soumettre de la page englobante, vous obtiendrez probablement une sorte d'erreur « accès refusé ». Ceci est une précaution de sécurité prise par le navigateur pour empêcher les scripts malveillants (par exemple pour empêcher la soumission automatique d'un formulaire au nom d'un utilisateur)
Le iframe
doit être dans le même domaine, sinon vous êtes SOL.
Pour accéder aux éléments du cadre, vous devez vous comporter différemment selon les navigateurs.
D'abord, obtenir le cadre:
document.getElementById
fonctionne toujours.window.frames[ frameName ]
devrait être bien aussi, mais utiliser la première
ensuite obtenir le document (voici où il devient délicat):
var doc = yourFrame.contentDocument ? yourFrame.contentDocument : yourFrame.contentWindow.document
Normes navigateurs nécessitent l'utilisation de contentDocument
; IE (au moins avant 8) utilise contentWindow.document
pour obtenir le document.
Enfin, vous pouvez récupérer le formulaire et l'envoyer.
doc.getElementById('yourForm').submit()
+1 pour utiliser correctement le contenuDocument –
étant X-Browser est toujours utile – geowa4
- 1. Contenu personnalisé réutilisable pour les boutons
- 2. Désactiver des boutons individuels dans une barre de boutons
- 3. Ordre de déclenchement des GWT EventHandlers
- 4. Déclenchement d'une bibliothèque API
- 5. Déclenchement forcé d'une règle dans Drupal
- 6. Utilisation des images comme boutons?
- 7. Affichage des boutons dynamiques HTML
- 8. boutons dans l'interface buider
- 9. iPhone Désactivation des boutons UIActionSheet
- 10. Boutons brillants dans wxPython?
- 11. Boutons dans WordPress
- 12. Création d'une dynamique de déclenchement
- 13. Boutons dans AdvancedDataGrid dans Flex
- 14. Comment faire un NSOutlineView où certains des boutons sont des boutons?
- 15. Très lent WebResponse déclenchement TimeOut
- 16. Activer déclenchement du contrôle étranger
- 17. Boutons radio dans SSRS Rapport
- 18. Boutons Toggle jumelés dans WPF
- 19. Boutons radio HTML appelés boutons à bascule
- 20. sélecteur à la place des boutons
- 21. Ajouter des boutons personnalisés au MessageBox existant
- 22. Boutons d'interface graphique dans Cocoa
- 23. Winforms barre d'outils de l'emballage des boutons.
- 24. créer des boutons de lien dynamique dans ListView
- 25. trier la liste des boutons radio dans ASP.NET
- 26. Attribuer des boutons de souris dans Visual Studio 2008
- 27. UIActionSheet addButtonWithTitle: ne pas ajouter des boutons dans l'ordre
- 28. Désactivation des boutons radio avec jQuery
- 29. Comment simuler UISegmentedControl avec des boutons personnalisés?
- 30. Silverlight Scrollviewer avec seulement des boutons
yourFrame.contentWindow.document ne fonctionne que dans IE – geowa4
@George: Vous avez absolument raison; merci d'avoir attrapé ça! –