Question

Alors, j'ai une page sur DomaineA, et, à l'aide d'une extension Chrome, je l'injection javascript qui inserts iframe que les points à DomaineB.

$("body").append("<iframe id='someFrame' src='http://www.domainB.com' width='300' height='800'></iframe>");

J'injectent aussi un javascript dans DomaineA que les tentatives pour obtenir contentWindow de l'iframe. Je veux utiliser le HTML5 api postMessage dessus.

$("body").append("<a class='myLink'>Post Message</a>");
$(".myLink").click(function(){
    var frameElem = document.getElementById("someFrame"); 
    console.log("frameElem: " + frameElem); //succeeds

var contentWin = frameElem.contentWindow;
console.log("contentWin : " + contentWin); //undefined

//can't do this since contentWin is undefined: 
//contentWin.postMessage("data", "*");
});

Cependant, la propriété contentWindow est indéfini. Pourquoi, et comment puis-je contourner? Si je mets ce code d'extension dans une page Web qui fonctionne très bien par lui-même.

Merci!

(grâce au minable jquery / javascript)

Était-ce utile?

La solution

Je sais que c'est un peu boiteux pour répondre à ma propre question, mais je l'ai fait un peu plus creuser, et a trouvé un bogue déposé le chrome pour la question: http://code.google.com/p/chromium/issues/detail?id=20773

I trouvé ce lien dans le groupe des extensions de chrome: http://groups.google.com/a/chromium.org/group/chromium-extensions/browse_thread/thread/1d4b68f0971ef190/3446a7e82848351c?lnk=gst&q=contentWindow#3446a7e82848351c

Autres conseils

Je pense qu'il est pour les mêmes raisons pour lesquelles les scripts objet de contenu de la fenêtre ne peut pas accéder de leur page parent. Voir cette question, et il a un lien vers une solution de contournement.

Vous devez incorporer un iframe dans votre cadre de racine qui envoie des requêtes à une trame client qui envoie ensuite les commandes vers le site Web racine comme indiqué dans l'exemple suivant. Ceci est connu comme le hack « pipe à sens unique » .: http://msdn.microsoft.com/en-us/library/bb735305. ASPX
text alt

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top