【问题标题】:Add javascript to iframe src attribute将 javascript 添加到 iframe src 属性
【发布时间】:2013-04-25 19:59:25
【问题描述】:

我有一个 jQuery AJAX 调用成功后调用的 javascript 函数。

 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", "");
         }
     });
 }

这会打开一个位于 iframe 中的 java 小程序,该程序会显示在 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 属性。我做错了什么?

编辑: 正如@TheZuck 所建议的,我添加了 deployJava.js:

doc.write('&lt;script src="https://www.java.com/js/deployJava.js"&gt;&lt;/script&gt;')

现在至少我得到一个错误:TypeError: document.getElementById(...) is null

为什么?

【问题讨论】:

  • 您是否尝试过将小程序直接包含在父页面中而不是 iframe 中?您可能会获得有关哪里出错的更有用的反馈。您是否尝试过让该代码在 DomReady 上运行,而不是在包含时立即运行?
  • @Kato 我可以在父页面上加载applet.html,它工作正常。即使是我的问题的第一部分,我将它放入 iframe,然后在对话框中显示它也很好。
  • 您是否忘记添加:
  • @TheZuck 不,我把它放在我主页的页眉中。它已加载。
  • iframe 是一个单独的实体,仅将其加载到您的主页中是不够的,它还需要存在...

标签: javascript jquery iframe


【解决方案1】:

我不知道为什么,但我所做的一切都不会让代码正常工作。我已经放弃尝试将内容写入 src 并决定编写一个查询字符串来将参数传递给小程序本身:

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

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

【讨论】:

    猜你喜欢
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多