2016-06-24 12 views
0

Diese JavaScript-Funktion öffnet ein neues Fenster, das das Bild zeigt, dass Daten sais (Daten enthält einen Bildpfad). Ich möchte dieses neue Fenster schließen, wenn der Benutzer irgendwo darauf klickt. Ich dachte, ich könnte es tun, indem ich etwas Javascript in window.write() einfügen, aber ich mache etwas falsch. Irgendwelche Hinweise?Wie schreibe ich js in window.write()

function myFunction(data) { 
    img = new Image(); 
    img.src = data; 
    window.open(data, '_blank', 'toolbar=0,location=0,menubar=0, width = '+ img.width +', height=' + img.height); 
    //window.write(<script type="text/javascript"> $(document).click(function(e) { if (e.button == 0) {window.close(); }}); </script>); 
} 
+1

Es gibt keine 'window.write()' Methode. Es gibt ein 'document.write()', aber wenn Sie versuchen, in das neu geöffnete Fenster zu schreiben, müssten Sie das Dokumentobjekt aus diesem neuen Fenster holen. – jfriend00

+0

Kann ich das Dokumentobjekt aus diesem neuen Fenster abrufen, indem ich var mywindow = window.open (....); ? –

+0

Ja, Sie können das Dokumentobjekt aus dem neuen Fensterobjekt abrufen. Aber es gibt Timing-Probleme damit und mit Ihrem Code. Zum Beispiel versuchen Sie, "img.width" zu referenzieren, bevor das Bild tatsächlich fertig geladen wurde, so dass es nicht funktioniert. – jfriend00

Antwort

1

Sie können kein JavaScript zu einem Fenster hinzufügen, das nur ein Bild enthält. Ihre beste Wette ist, entweder eine HTML-Seite für jedes Bild zu machen, die das tut, was Sie wollen ODER ein leeres Fenster öffnen und das Bild und das Skript hinzufügen, indem Sie das Dokument des Fensters manipulieren.

Wenn Sie gehen, um die zweite Route müssen Sie eine Variable für das Fenster machen: