2009-08-27 6 views
5

J'ai créé un script Greasemonkey fonctionnant correctement dans l'éditeur de firebug, avec les spécificités de Greasemonkey supprimées, mais pas lorsque j'essaye de l'empaqueter comme un script d'utilisateur. La console d'erreur Firefox signale qu'une iframe que j'essaie d'utiliser n'est pas définie.iframe indéfini dans le script Greasemonkey

J'ai coupé la userscript jusqu'à un cas au moins où il doit être imprimé le code HTML iFrame dans la console Firebug et ne lorsqu'il est exécuté dans l'éditeur de Firebug, mais ne fonctionne pas comme userscript:

// ==UserScript== 
// @name   Movies 
// @include  http://*.princecharlescinema.com/* 
// @include  http://princecharlescinema.com/* 
// ==/UserScript== 

// stop script loading multiple times 
if (top !=self) return; 

var iframeHTML = window.frames['iframe2'].document.documentElement.innerHTML; 
unsafeWindow.console.log(iframeHTML); 

An example page the script is intended for

S'il est de toute utilisation l'essentiel du script complet est je collectionne toutes les balises td de cette iframe, obtenir des informations de leur part, puis insérez une nouvelle html dans certains des mêmes balises td.

Toute aide serait appréciée.

Répondre

0

Peut-être vous avez besoin d'attendre DOMFrameContentLoaded

+0

J'ai essayé d'utiliser une longue minuterie, mais le problème est pas avec un contenu à l'intérieur de l'iframe ne pas être prêt, mais Greasemonkey Œuvrer comme la balise iframe réelle elle-même n'existe pas . – aston

+0

Le test d'une minuterie longue et l'identification de la trame par sa position de tableau, [2], au lieu de son attribut name l'ont fait fonctionner. DOMFrameContentLoaded est une meilleure solution qu'un setTimeOut. – aston

Questions connexes