web-dev-qa-db-fra.com

Comment ouvrir une nouvelle fenêtre et y insérer du HTML avec jQuery?

J'essaie d'ouvrir une nouvelle fenêtre à partir de javascript mais rien n'est inséré dans le code HTML:

var callScriptText = $('#callScriptText').html();
var url = '/Action/CallScript/?callScript=';

// Open the current call script in a new window
var openWindow = window.open(url, 'callScriptPopup', 'width = 500, height = 500');
$(openWindow).html(callScriptText);

Quelqu'un sait-il pourquoi?

66
FairyQueen

Voici un exemple pour ouvrir une nouvelle fenêtre avec du contenu utilisant jQuery

<script>
function nWin() {
  var w = window.open();
  var html = $("#toNewWindow").html();

    $(w.document.body).html(html);
}

$(function() {
    $("a#print").click(nWin);
});​
</script>

<div id="toNewWindow">
    <p>Your content here</p>
</div>

<a href="javascript:;" id="print">Open</a>​

EDIT: Pour ceux qui disent que ce code ne fonctionne pas, voici un jsfiddle pour l'essayer http://jsfiddle.net/8dXvt/

109
Juanma

Essaye ça:

var x=window.open();
x.document.open();
x.document.write('content');
x.document.close();

Je trouve que cela fonctionne dans Chrome et IE.

83
Emre

Construire sur la réponse de @ Emre.

Avec javascript, vous pouvez chaîner, alors je viens de modifier le code pour:

var x=window.open();
x.document.open().write('content');
x.close();

De plus, pour le forcer dans une nouvelle fenêtre (pas un nouvel onglet), donnez les dimensions de la première ligne. Mais ce doit être le troisième argument. Alors changez la première ligne en:

var x=window.open('','','width=600, height=600');
25
Sablefoste

essayer:

var x = window.open('', '', 'location=no,toolbar=0');
x.document.body.innerHTML = 'content';
2
Hasan A Yousef