添加javascript到iframe src属性

Add javascript to iframe src attribute

本文关键字:src 属性 iframe javascript 添加      更新时间:2023-09-26

我有一个javascript函数,在jQuery AJAX调用成功后被调用。

 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,它在iframe中显示在jQuery对话框中。这工作得很好,但现在我需要将值传递给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

为什么?

我不知道为什么,但我所做的一切都会让代码工作。我已经放弃了将内容写入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>');

这可以工作,但不确定这是否是最优雅的解决方案。