2016-04-11 9 views
0

Ich kann ein Bild auf einer Leinwand ohne Probleme zeichnen. Aber ich möchte das Bild auf der Leinwand in einem neuen Fenster gezeichnet werden. Variablen haben korrekte Werte, aber es wird immer noch nichts gezeichnet.Bild wird nicht in Canvas gezeichnet, wenn es in einem neuen Fenster geöffnet wird

Hier ist mein Code:

var popup = window.open(); 

popup.oldCanvas= oldCanvas; 

popup.url = 'http://www.html5canvastutorials.com/demos/assets/darth-vader.jpg'; 

popup.document.open(); 

popup.document.write("<html><head>"); 

popup.document.write('<script src="lib/jquery/jquery-2.1.1.min.js"></script>'); 

popup.document.write("<script>\n"); 

popup.document.write("$(document).ready(function() { \n"); 

popup.document.write(" function createCanvas() {       \n"); 

popup.document.write("  var img = new Image;\n"); 

popup.document.write("  var newCanvas = document.createElement('canvas');\n"); 

popup.document.write("  var context = newCanvas.getContext('2d');  \n"); 

popup.document.write("  newCanvas.width = oldCanvas.width;   \n"); 

popup.document.write("  newCanvas.height = oldCanvas.height;   \n"); 

popup.document.write("  img.onload = function() {\n"); 

popup.document.write("    context.drawImage(this, 0, 0);     \n"); 

popup.document.write("  };            \n"); 

popup.document.write("  img.src = url;         \n"); 

popup.document.write(" };             \n"); 

popup.document.write(" createCanvas();          \n"); 

popup.document.write("});              \n"); 

popup.document.write("</script>"); 

popup.document.write("</head><body>"); 

popup.document.write("</body>"); 

popup.document.write("</html>"); 

popup.document.close(); 

Bitte sagen Sie mir, was ich falsch mache, wie der gleiche Code funktioniert gut, wenn nicht in einem neuen Fenster gezogen.

+0

Was passiert, wenn Sie (Dokument) .ready' setzen 'console.log (oldCanvas)' eine Zeile unter der '$ geschieht? – tyler

+0

Es druckt das HTML-Canvas-Element: '' – nullpointer

+0

In der document.write-Version? Kannst du es in ein Spiel setzen? – tyler

Antwort

2

Die Leinwand erstellt, aber nie in das DOM eingefügt:

var newCanvas = document.createElement('canvas'); 
document.body.appendChild(newCanvas);    // add to DOM 
... 
Verwandte Themen