2015-03-30 3 views
0

Мои проблемы кажутся следующие:выполнение JavaScript в window.open() генерируется окно

У меня есть этот код:

function openNew(theImage){ 

    var theHTML = "<!doctype html><html><head><script src='../js/windowScript.js'></script><title>EditWindow</title></head><body><div id='canvasContainer'></div><img id='removeable' src='"+theImage+"'><button id='cropMe'>Crop it!</button></body></html>"; 
    var editWindow = window.open("","","width=1000 height=800 titlebar=0"); 


    editWindow.document.write(theHTML); 
} 

который открывает новое окно с «theHTML» -струны содержание , И, как вы можете видеть, он также добавляет скрипт «windowScript.js» в новое окно.

windowScript.js:

window.onload = function(){ 

    document.getElementById("cropMe").addEventListener("click",removeImg); 

    alert("it began"); 

} 

function removeImg(){ 

    var imgTAG = document.getElementById("removeable"); 
    var imgURL = imgTAG.getAttribute("src"); 
    if(imgTAG.parentNode) 
     imgTAG.parentNode.removeChild; 

} 

, но этот сценарий никогда не выполняется. Если я проверяю скрипт с помощью инспектора хрома, он говорит мне, что он там, и он даже обнаруживает, есть ли в нем ошибки, но он не выполняется вообще.

Есть ли обходной путь, чтобы запустить скрипт в новом окне, без ввода его через editWindow.document.write(); ?

Заранее благодарю вас за поддержку!

+0

Если обнаружены ошибки, он запускает скрипт. Вы пытались добавить к нему явные вызовы 'console.log()'? – Pointy

+0

Вау, это сложно. Даже преобразование строки HTML в URL-адрес данных и открытие страницы с этим не сработает! –

ответ

0

ОБНОВЛЕНО еще раз и на самом деле протестировал код.

windowScript.js

function removeImg(myWindow){ 
    var imgTAG = myWindow.document.getElementById("removeable"); 
    var imgURL = imgTAG.getAttribute("src"); 
    if(imgTAG.parentNode) { 
     imgTAG.parentNode.removeChild(imgTAG); 
     console.log(imgURL); 
    } 
    else { 
     console.log("fail"); 
    } 
} 

function openNew(theImage){ 

    var theHTML = "<!doctype html><html>" + 
        "<head><title>EditWindow</title></head><body>" + 
        "<div id='canvasContainer'></div><img id='removeable' src='"+theImage+"'>" + 
        "<button id='cropMe'>Crop it!</button></body></html>"; 

    var editWindow = window.open("","","width=1000 height=800 titlebar=0"); 

    editWindow.document.write(theHTML); 
    editWindow.document.getElementById("cropMe").addEventListener("click",function(){ removeImg(editWindow); }); 
} 

windowtest.html

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="ISO-8859-1"> 
<title>WindowTest</title> 

    <script src="windowScript.js"></script> 

</head> 
<body> 

<a href="javascript:openNew('Capture.PNG')">open window</a> 

</body> 
</html> 
+0

И скрипт в голове ??? – epascarello

+0

Это источник в голове, но файл сценария имеет функцию самоисполнения – vbranden

+0

И если он находится в голове, как он найдет элемент? – epascarello

0

вам нужно позвонить в editWindow.document.close();