2010-12-15 4 views
1

J'ai écrit un script Greasemonkey pour Chrome (drag and drop comme extension) pour une utilisation avec Facebook. Je sais que Greasemonkey est en mode bac à sable et que, du moins en ce qui concerne Firefox, vous ne pouvez pas fermer les fenêtres avec des scripts, sauf si vous modifiez un paramètre dans le navigateur. Cependant, je sais que la plupart des navigateurs permettent aux fenêtres enfants d'être fermées par la fenêtre parent sans avoir besoin de la confirmation de l'utilisateur. De toute façon j'essaye d'obtenir mon manuscrit pour ouvrir une fenêtre, attrapez un morceau de texte d'un objet de HTML et fermez la fenêtre à la pression d'un bouton sur la page.Fermeture de fenêtres avec Greasemonkey

Mon code pour ouvrir la fenêtre ressemble à ceci:

function birthday(linkAddress) { 
var winNew=window.open(linkAddress, "_blank", "height=100", "width=100"); 
/*code to be run on page*/ 
    winNew.close() 
} 

La fenêtre s'ouvre bien mais j'obtiens une erreur javascript Chrome dire « ne peut pas appeler la méthode « proche » de undefined ». Je suppose qu'il y a quelque chose qui ne va pas avec mon objet lié au sandboxing de Greasemonkey, mais je suis incapable de déterminer quoi. Est-il même possible de fermer une fenêtre à l'aide d'un script Greasemonkey dans Chrome? Y a-t-il un paramètre que je dois activer? Ou mon code est-il faux? Gardez à l'esprit que ce code s'exécute à partir d'une fonction dans la page de la fenêtre principale que j'ai définie égale à une fonction dans mon script en utilisant un événement onClick d'un bouton que j'ai écrit sur la page. Des conseils pour accéder aux éléments DOM sur la page enfant seraient également appréciés.

Merci pour toute aide!

(Désolé, je suis tout à fait nouvelle, ainsi que de la pratique avec la programmation, et c'est la première fois que je l'ai écrit un script Greasemonkey)

Répondre

0

Le bout de code affiché est insuffisant et ne correspond pas à la opération déclarée de "fermer la fenêtre à la pression d'un bouton sur la page". Donc, la meilleure estimation est que soit la fonction de fermeture est en dehors de birthday() (où winNew est défini) ou quelque chose dans le code non affiché est à l'origine du problème. Une autre mise en garde est que vous devez savoir que le script Greasemonkey peut également se déclencher dans la fenêtre enfant, en fonction de l'URL spécifiée lors de l'ouverture de la fenêtre enfant. Voici un exemple de code qui ouvre et ferme une fenêtre enfant en appuyant sur les boutons:
See it in action at jsfiddle

<html> 
<head> 
<script type="text/javascript"> 
    var chldWnd; 

    function OpenChldWin() 
    { 
     //chldWnd = window.open ("http://www.google.com"); 
     chldWnd = window.open ('','','height=200, width=200'); 
     chldWnd.document.write ('<p>My New Window</p>'); //-- Don't do if opening a URL in new window. 
     chldWnd.focus(); 
    } 

    function CloseChldWin() 
    { 
     if (chldWnd.closed) 
      alert ('Child window was already closed.'); 
     else 
     { 
      chldWnd.close(); 
      alert ('Child window is NOW closed.'); 
     } 
    } 
</script> 
</head> 
<body> 
<input type="button" value="Open Child Window"  onclick="OpenChldWin()"> 
<input type="button" value="Close the Child Window" onclick="CloseChldWin()"> 
</body> 
</html> 
+0

Je pense qu'une partie de mon problème était aussi que je pensais que je courais le code de la page alors qu'en réalité je ne l'étais pas. Merci d'aider à clarifier. Je vais essayer à nouveau, en ajoutant des hacks de localisation si nécessaire. – Matt

Questions connexes