2013-05-01 4 views
0

У меня есть функция javascript, которая вызывается после успешного вызова JQuery AJAX.Добавить javascript в атрибут iframe src

function launchTool(user, pass, name, hash, port) 
{ 
    var iframe = jQuery('<iframe id="AppletFrame" src="http://www.mysite.com/applications/applet.html"></iframe>'); 
    var $dialog = jQuery('<div></div>'); 
    $dialog.append(iframe); 
    $dialog.dialog({ 
     title: name, 
     width: '425', 
     height: '400', 
     modal: true, 
     close: function() { 
      iframe.attr("src", ""); 
     } 
    }); 
} 

Это открывает Java-апплет, который в IFRAME, который показан в диалоговом окне JQuery. Это отлично работает, но теперь мне нужно передать значения в java-апплет. Это post выглядит точно, что мне нужно.

Так что я попытался это:

function launchTool(user, pass, name, hash, port) 
{ 

    var iframe = jQuery('<iframe id="AppletFrame" src="about:blank"></iframe>'); 

    var doc = document.getElementById('AppletFrame').contentWindow.document; 
    doc.open(); 
    doc.write('<script>'); 
    doc.write('var attributes = {code:"com.test.MyApplet", width:400, height:375};'); 
    doc.write('var parameters = {jnlp_href: "http://'+window.location.host+'/applications/MyConfigApplet.jnlp", user: "'+user+'", pass: "'+pass+'", name: "'+name+'", hash: "'+hash+'", port: "'+port+'"};'); 
    doc.write('</script>'); 
    doc.write('deployJava.runApplet(attributes, parameters, "1.6");'); 
    doc.close(); 

     var $dialog = jQuery('<div></div>'); 
    $dialog.append(iframe); 
    $dialog.dialog({ 
     title: name, 
     width: '425', 
     height: '400', 
     modal: true, 
     close: function() { 
      iframe.attr("src", ""); 
     } 
    }); 
} 

В основном я пытался добавить содержимое applet.html в моем рабочем примере к коду. Я не вижу ошибок, и единственное, что появляется, это пустой iframe. Я думаю, это не относится к атрибуту src. Что я делаю не так?

EDIT: Как было предложено @TheZuck я добавил deployJava.js с:

doc.write('<script src="https://www.java.com/js/deployJava.js"></script>')

Теперь, по крайней мере я получаю сообщение об ошибке: TypeError: document.getElementById(...) is null

Почему?

+2

Вы пробовали просто включить апплет прямо в родительскую страницу вместо iframe? Вы можете получить более полезную информацию о том, где это происходит. Вы пытались сделать этот код запущенным onDomReady, а не сразу после включения? – Kato

+0

@Kato Я могу просто загрузить applet.html на родительскую страницу, и он отлично работает. Даже эта первая часть моего вопроса, где я помещаю ее в iframe, а затем показываю ее в диалоговом окне, хорошо работает. – Tom

+0

Вы забыли добавить: ? – TheZuck

ответ

0

Я понятия не имею, почему, но ничего не сделаю, чтобы код работал. Я заброшенном пытаюсь написать содержание в ГКЗ и решил написать строку запроса для передачи параметров самого апплета:

var iframe = jQuery('<iframe id="AppletFrame" width="435" height="410" frameborder="0" src="http://myurl.com/applications/applet.php?user='+user+'&pass='+pass+'&name='+name+'&hash='+hash+'&port='+port+'"></iframe>'); 

Это работает, но не уверен, что это самое элегантное решение.

Смежные вопросы