2013-05-01 80 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 applet,它位於一個顯示在jQuery對話框中的iframe中。這很好,但現在我需要將值傳遞給java applet。這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屬性。我究竟做錯了什麼?

編輯: 正如@TheZuck建議我加入deployJava.js:

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

現在至少我得到一個錯誤:TypeError: document.getElementById(...) is null

爲什麼?

+2

您是否嘗試過將小程序直接放入父頁而不是iframe?你可能會得到更多有用的反饋,告訴他們哪裏出了問題。你有沒有嘗試讓代碼運行onDomReady而不是立即包含? – Kato 2013-05-01 19:27:18

+0

@Kato我可以在父頁面上加載applet.html,它工作正常。即使我的問題的第一部分放在iframe中,然後在對話框中顯示它也很好。 – Tom 2013-05-01 19:56:29

+0

您忘記添加: ? – TheZuck 2013-05-01 20:14:56

回答

0

我不知道爲什麼,但沒有我會做的代碼工作。我已經拋棄試圖將內容寫入src和決定編寫一個查詢字符串參數傳遞給applet的本身:

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>'); 

這工作,但不知道這是最好的解決方法。