2011-06-16 6 views
0

Je suis en train de suivre tous les liens contenus dans une certaine classe (f_foto) dans le DOM, les suivre, puis examiner les résultats. Je pourrait utiliser XMLHttp.Request mais le site renvoie uniquement le texte HTTP, pas XML (ou au moins .responseXML est nul). Plutôt que de gratter la chaîne, je tente de rester en examinant le DOM résultant de la réponse texte afin que j'ouvre une nouvelle fenêtre avec le src du lien trouvé dans la classe f_foto. La fenêtre s'ouvre ok, mais après je ne peux pas accéder à la nouvelle fenêtre . Notez qu'il n'est pas nécessaire d'utiliser une nouvelle fenêtre, mais je ne peux pas savoir comment convertir un fichier texte en DOM d'une autre manière.puis-je combiner ces deux instructions?

Dans le code suivant la fenêtre ouvre une nouvelle fenêtre, mais de tester la théorie dans la déclaration suivante, qui change la couleur d'arrière-plan noir, une erreur est renvoyée « ne peut pas régler la propriété « bgcolor » de non défini. » Ici, peu importe ce que j'utilise pour manipuler detailWindow - c'est toujours indéfini. Basé sur la recherche que j'ai faite cela doit avoir à voir avec le fait que ce script est situé dans la page parent et pas dans la page ouverte. Alors, comment puis-je obtenir le contrôle sur la fenêtre nouvellement ouverte? Ce que je voudrais est d'avoir le résultat de

document.getElementById("tab_content"). 

var detailWin; 
for (var i = 0; i<searchResult.length; ++i) 
{ 
     detailWin=window.open(profileLinks[i], "Detail Window", 
       "width=700, height=650, resizable=1, toolbar=0, location=0, 
status=0, menubar=0, directories=0, scrollbars=yes, top=0, left=0"); 
     detailWin.bgColor="black" 
} 

Répondre

0

Peut-être que je suis mal compris votre question, mais ce son comme vous dites que tout ce que vous avez besoin de ce pour est de convertir un tas de pages html arbitraires spécifiées par des URL dans le DOM que vous pouvez manipuler en un seul endroit ; vous n'avez pas besoin d'afficher une fenêtre contextuelle pour l'utilisateur.

Si ma compréhension est correcte, vous pouvez probablement utiliser la fonction de chargement de jQuery.

Si vous avez un div aléatoire sur votre page (probablement le définir pour afficher: aucun), vous pouvez l'utiliser pour charger le contenu d'une URL dans ce div, puis vous pouvez simplement manipuler ce que vous voulez dans le DOM sous ce div comme si ce contenu était toujours là.

<div id='someRandomDiv'></div> 
<script type="text/javascript"> 
    loadIsDone = function() { 
     //do stuff with document.getElementById('someRandomDiv').childNodes; 
    }; 

    $('#someRandomDiv').load('http://www.url.com', loadIsDone); 
</script> 
+0

oui, exactement! Je pensais exactement cela mais je ne sais pas comment le faire.J'ai l'idée que vous pouvez créer un div dans une page chargée et le cacher et mettre tout ce que vous voulez là-bas, mais les détails de la façon de le faire sont un grand courbe d'apprentissage en plus d'apprendre à gérer les éléments DOM que je comprends la plupart d'entre vous les gars pensent est assez élémentaire en premier lieu. (!! :)) jeu de mots! Pouvez-vous suggérer des extraits de code qui feraient cela? extension chromée btw est jQuery disponible pour une extension chrome? – Jerome

+0

jQuery est une bibliothèque javascript que vous pouvez télécharger depuis jQuery.com et l'héberger depuis votre site, il vous suffit d'ajouter une balise script qui pointe vers une version google ho stsComme: ou: Pour ce qui est de l'accrocher à une extension chrome, je ne suis pas vraiment sûr - j'avais supposé que c'était juste une page web. – DrShaffopolis

1

En supposant que votre nouvelle fenêtre est conforme à Same-origin policy, vous devriez être en mesure d'accéder à la fenêtre contextuelle comme normale. Fondamentalement, cela signifie que le popup doit être sur le même protocole et l'hôte.

La valeur de retour de window.open est l'objet window de la fenêtre, afin de faire votre travail de code, vous devez définir la propriété bgColor sur document de la fenêtre.

document.getElementById("tab_content"). 

var detailWin; 
for (var i = 0; i<searchResult.length; ++i) 
{ 
     detailWin=window.open(profileLinks[i], "Detail Window", 
       "width=700, height=650, resizable=1, toolbar=0, location=0, 
status=0, menubar=0, directories=0, scrollbars=yes, top=0, left=0"); 
     detailWin.document.bgColor="black" 
} 
+0

Cela n'a pas aidé. Maintenant, il renvoie une erreur - "Uncaught TypeError" Impossible de lire la propriété 'document' de indéfini " – Jerome

+0

Tout ce qui référence detailWin renvoie undefined mais la fenêtre s'ouvre avec le code html désiré affiché chaque fois que la boucle est répétée – Jerome

Questions connexes