J'ai une application de toile facebook qui fonctionne dans un iframe. Je voudrais déboguer ma page dans Firebug mais je ne peux pas obtenir le javascript pour l'étendre à l'iframe qui exécute mon application.
l'iframe:
<iframe frameborder="0" src="[app_url_removed]" name="iframe_canvas" id="iframe_canvas" class="canvas_iframe_util" style="height: 905px;"></iframe>
j'ai essayé tous les éléments suivants et aucun d'entre eux ne fonctionne:
cd(iframe_canvas)
cd(window.iframe_canvas)
cd(iframe_canvas.window)
cd($('iframe_canvas'))
J'ai Firefox 3.6.13 et j'ai essayé Firebug 1.7a11 et Firebug 1.6.2
également essayé le bookmarklet et diverses autres choses de ce lien sélecteurs Firebug et jQuery dans un iFrame en vain.
utilisez l'une de ces commandes:
cd(frames[0])
cd(frames["iframe_canvas"])
et
cd(top)
pour revenir à la fenêtre principale.
Néanmoins, en raison d'un bogue, cela ne fonctionne pas actuellement sur les iframes inter-domaines ( http://code.google.com/p/fbug/issues/detail?id=389 ). Il existe deux cas de test où vous pouvez tester votre environnement pour les deux cas:
Autre source de surprise possible: si vous exécutez plusieurs commandes à la fois, la commande cd semble n'avoir aucun effet sur les commandes suivantes:
>>> cd(frames[0]); location.href;
["Current window:", Window cdFrame.html]
"https://getfirebug.com/tests/content/commandLine/cd.html"
>>> location.href
"https://getfirebug.com/tests/content/commandLine/cdFrame.html"
Dans Chrome il y a une liste déroulante au bas haut * de la console javascript qui vous permet de basculer vers un autre cadre pour exécuter javascript. Fonctionne également entre les domaines!
* Mise à jour le 2/10/14: dans les versions plus récentes de Chrome, cette liste déroulante a été déplacée du bas vers le haut de la console.
Les éléments sont accessibles comme suit: window.frames[x].document.getElementById("elementID");
où x
serait l'index du cadre et elementID
est l'élément vers lequel vous pointez.
Je suppose que le wiki n'a pas été mis à jour lorsque cette question a été posée, mais il contient maintenant de beaux exemples: https://getfirebug.com/wiki/index.php/Cd
Fondamentalement, ce qui vous manquait pour obtenir la fenêtre de l'élément iframe était ".contentWindow"