2009-08-29 8 views
0

Je tente d'améliorer une application Web interne que nous utilisons. J'utilise un favelet personnalisé pour autopopuler certains champs. Les variables javascript dont j'ai besoin pour remplir un formulaire existent en interne sur une page HTML différente. Est-il possible d'accéder à vars à partir d'une autre page html? Ils seraient intégrés dans l'élément de document de pages externes.Accéder à la variable javascript de la page HTML dans le même domaine?

Je ne souhaite pas ouvrir une fenêtre contextuelle ou rediriger la page.

Ceci sera incorporé dans la page en tant que favelet.

Merci!

Répondre

1

Vous pouvez utiliser une iframe et accéder à ses variables via l'objet frames dans un gestionnaire onload:

<script type="text/javascript"> 
    // This function will run as a callback when the iframe loads 
    function frameLoad() { 
     // Access the foo variable from external.html 
     var foo = frames["externalFrame"].foo; 
    } 
    // Create an invisible iframe 
    var iframe = document.createElement('iframe'); 
    iframe.width = 0; 
    iframe.height = 0; 
    iframe.style.display = "none"; 
    // Reference the page on the same domain with external variables on it 
    iframe.src = "external.html" 
    // Give it a name and ID so we can access it via the frames object 
    iframe.id = "externalFrame"; 
    iframe.name = "externalFrame"; 
    // Set the load handler 
    iframe.onload = frameLoad; 
    // Append the iframe to the DOM 
    document.body.appendChild(iframe); 
</script> 
+0

Le javascript dans ma réponse initiale a eu quelques erreurs que j'ai corrigé. –

+0

Bon à savoir. J'ai eu un problème similaire seulement récemment, où mon application a été "emprisonnée" dans un iframe mais j'ai dû accéder à des variables en dehors du cadre. Je ne savais pas que c'est possible du tout. – Matthias

+0

Merci pour l'info! Je pense que cela fonctionnera mais j'ai quelques erreurs. Regardez ci-dessous. –

0

iFrame ressemble à cela fonctionnera, mais je suis toujours quelques problèmes en ce qui concerne l'accès aux vars. .. ceci vide la fenêtre courante affichant [objet]?

Voici ce que je suis arrivé à ce jour ...

javascript: 
var issueDoc = window.frames.editor.document; 

function wwaLoad() { 
    alert(issueDoc.control.getSortedIdList()); 
} 

var listFrame = issueDoc.createElement('iframe'); 
listFrame.width = 0; 
listFrame.height = 0; 
listFrame.style.display = "none"; 
listFrame.src = "lp.jps?data=1"; 
listFrame.id = "WWALIST"; 
listFrame.name = "WWALIST"; 
listFrame.onload = wwaLoad; 
issueDoc.body.appendChild(listFrame); 
+0

Votre contexte de fenêtre de cadre 'lp.jps? Data = 1' devrait être accessible avec' window.frames ['WWALIST'] 'plutôt que' window.frames.editor.document' –

+0

Problème, c'est dommage que je n'arrive jamais à la WWALoad Fonction car un document.write se produit pour une raison quelconque. Je suis incapable d'ajouter du texte à la page sans écrire [objet]. Une meilleure explication ici http://stackoverflow.com/questions/1353215/javascript-appendchild-is-causing-document-write-favelet –

Questions connexes