Je travaille sur une barre latérale de Firefox qui charge une page Web dans le document principal. Maintenant, je voudrais appeler une fonction javascript à partir du document principal en réponse à un bouton poussé sur la barre latérale. Comment la barre latérale peut-elle obliger le document principal à exécuter une de ses fonctions javascript? Jusqu'à présent, j'ai une variable contenant le code javascript, mais comment peut-elle être exécutée? (Dans le contexte du site chargé?)Comment autoriser une barre latérale à exécuter du code javascript à partir du document principal?
Comment autoriser une barre latérale à exécuter du code javascript à partir du document principal?
Répondre
Dr.Molle est correct avec sa réponse mais j'aime toujours travailler des exemples.
console.log("Opening new page at http://example.com");
page = window.open('http://example.com');
console.log(page);
console.log("calling alert on opened page");
page.alert("I opened and the previous windows JS called me!!!!");
console.log("called alert");
Exemple de page => [Supprimé. Voir mise à jour ci-dessous]
Résultats:
Note: je devais permettre popups pour le code de démonstration pour travailler, mais cela est une autre question pour une autre question SO. ;)
MISE À JOUR:
Ce faisant
page.alert()
travaillé parce qu'il n'a pas eu à attendre la page pour terminer le chargement pour que cela fonctionne. Afin d'être en mesure d'appeler une fonction est un script sur la page chargée, vous devez vous assurer que le script a terminé le chargement. Pour illustrer cela, j'ai changé mon exemple.
Exemple page =>http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-call-function-in-opened-page.html
La JS ressemble à ceci
page = window.open('http://mikegrace.s3.amazonaws.com/forums/stack-overflow/example-the-other-page.html');
var initOtherPage = function() {
try {
page.showMeTheMoney();
console.log("It worked!");
} catch (e) {
console.log("failed to call function on other page because: "+e);
setTimeout(function() {
console.log("trying again")
initOtherPage();
}, 1000);
}
}
initOtherPage();
Sortie de la console
page Ouvert
Chargez la page en utilisant window.open() et l'enregistrer dans une variable:
page=window.open('some.htm')
alors vous pouvez accéder à la fenêtre en utilisant cette variable et appeler des fonctions à l'intérieur :
page.someFunction()
C'est trop cool! Je ne savais pas que tu pouvais faire ça. :) Merci! –
Merci beaucoup! – Nanadada
Merci beaucoup, page.alert() fonctionne, mais comment peut-on appeler une fonction dans un script externe? Par exemple: Le script externe est inclus par: othercript.js contient une fonction que j'aimerais appeler. Comment une fonction dans otherscript.js peut-elle être référencée/appelée? (typeof mainWindow [nom_fonction] renvoie "non défini" dans ce cas). – Nanadada
@Nanadada, intéressant. Pas certain de pourquoi. Je vais devoir vérifier ça. Merci de vérifier cela. –