Ajouter du contenu à une nouvelle fenêtre ouverte

Je ne sais pas comment résoudre ce problème, j'ai essayé de lire de nombreuses publications, mais personne ne répond.

Je dois ouvrir une nouvelle fenêtre avec une page déjà codée (dans le même domaine) et ajouter du contenu.

Le problème est que si j'utilise OpenWindow.write() la page n'est pas encore chargée ou elle remplace tout et seul le code ajouté par écrit apparaît.

 var OpenWindow = window.open('mypage.html','_blank','width=335,height=330,resizable=1'); OpenWindow.document.write(output); 

output est le code que je dois ajouter.

J'ai besoin de travailler au moins sur Firefox, IE et GC.

Merci d'avance. Ce n'est pas un problème si je dois utiliser JQuery.

Dans le parent .html:

 <script type="text/javascript"> $(document).ready(function () { var output = "data"; var OpenWindow = window.open("child.html", "mywin", ''); OpenWindow.dataFromParent = output; // dataFromParent is a variable in child.html OpenWindow.init(); }); </script> 

Dans child.html :

 <script type="text/javascript"> var dataFromParent; function init() { document.write(dataFromParent); } </script> 

Lorsque vous souhaitez ouvrir un nouvel onglet / fenêtre (dépend des paramètres de configuration de votre navigateur):

 output = 'Hello, World!'; window.open().document.write(output); 

Lorsque la sortie est un Object et que vous souhaitez obtenir JSON, par exemple (peut également générer tout type de document, même image codée dans Base64)

 output = ({a:1,b:'2'}); window.open('data:application/json;' + (window.btoa?'base64,'+btoa(JSON.stringify(output)):JSON.stringify(output))); 

Lorsque vous souhaitez ajouter certaines données à la page existante

 output = '<h1>Hello, World!</h1>'; window.open('output.html').document.body.innerHTML += output; output = 'Hello, World!'; window.open('about:blank').document.body.innerText += output; 

Voici ce que vous pouvez essayer

  • Écrivez une fonction pour dire init () dans mypage.html qui fait la chose html (ajouter ou quoi de jamais)
  • Au lieu d' OpenWindow.document.write(output); Appelez OpenWindow.init() lorsque le dom est prêt

Donc, la fenêtre parent aura

  OpenWindow.onload = function(){ OpenWindow.init('test'); } 

Et dans l'enfant

  function init(txt){ $('#test').text(txt); } 

Lorsque vous appelez document.write après qu'une page a été chargée, elle éliminera tout le contenu et le remplacera par le paramètre que vous fournissez. Utilisez plutôt les méthodes DOM pour ajouter du contenu, par exemple:

 var OpenWindow = window.open('mypage.html','_blank','width=335,height=330,resizable=1'); var text = document.createTextNode('hi'); OpenWindow.document.body.appendChild(text); 

Si vous souhaitez utiliser jQuery, vous obtiendrez de meilleures API à traiter. Par exemple:

 var OpenWindow = window.open('mypage.html','_blank','width=335,height=330,resizable=1'); $(OpenWindow.document.body).append('<p>hi</p>'); 

Si vous avez besoin du code à exécuter après que le DOM de la nouvelle fenêtre est prêt, essayez:

 var OpenWindow = window.open('mypage.html','_blank','width=335,height=330,resizable=1'); $(OpenWindow.document.body).ready(function() { $(OpenWindow.document.body).append('<p>hi</p>'); }); 

Si vous souhaitez ouvrir une page ou une fenêtre avec l'envoi de données POST ou méthode GET, vous pouvez utiliser un code comme ceci:

 $.ajax({ type: "get", // or post method, your choice url: yourFileForInclude.php, // any url in same origin data: data, // data if you need send some data to page success: function(msg){ console.log(msg); // for checking window.open('about:blank').document.body.innerHTML = msg; } });