【问题标题】:Iframe content not loaded in JQuery DialogIframe 内容未在 JQuery 对话框中加载
【发布时间】:2014-03-30 01:02:26
【问题描述】:

我有一个页面,我将在其中动态创建 iframe 并将其附加到 div。 该 div 将附加到一个 jquery 对话框。

<div id="diviframe"></div>
<script>
var iFrame = $('<iframe id="thepage" width="450" height="400"></iframe>').appendTo("#diviframe");
    var iFrameDoc = iFrame[0].contentDocument || iFrame[0].contentWindow.document;
    iFrameDoc.write('<p>Some useful html</p>');
    iFrameDoc.write('<p>Some useful stuff</p>');   
    iFrameDoc.close();


    $("#diviframe").dialog({

        autoOpen: false,
        modal: true,
        height: 500,
        width:500,
        open: function(ev, ui) {

    }

    });

$("#diviframe").dialog('open');

iframe 的内容在 jquery 对话框中打开时没有写入。 任何人都可以为此提出解决方法吗?

更新:

 function test() {
        var iFrame = $('<iframe id="thepage" width="500" height="500" src="http://stackoverflow.com"></iframe>').appendTo("#diviframe");
        var parent = "divparent";
        var iFrameDoc = iFrame[0].contentDocument || iFrame[0].contentWindow.document;
        iFrameDoc.write('<p>Some useful html</p>');
        iFrameDoc.write('<p>Some useful stuff</p>');
        iFrameDoc.close();      
        return iFrame;
    }






    var $dialog; //Must be at the global scope
    function dialog() {      
        alert(1);
        $.get(test, {}, function(html) {
            $dialog.html(html);
            $dialog.dialog("open");
        });
    }

    $(function() {
        //Initialize (without showing it)
        var $dialog = $('<div id="dialog" title=""></div>').dialog({
            autoOpen: false,
            modal: true
        });
    });
    dialog();

我尝试在 jquery 对话框加载后动态调用一个函数,但它显示了一些错误。如何从 jquery 对话框加载函数?

【问题讨论】:

    标签: javascript jquery jquery-ui iframe jquery-ui-dialog


    【解决方案1】:

    我认为你不需要为你正在做的事情使用 iframe,除非你在发布问题之前已经删除了一些重要的细节。

    您可以将内容直接附加到#diviframe,它会正常显示。

    $("#diviframe").append("<p>Some useful html</p>");
    $("#diviframe").append("<p>Some useful stuff</p>");
    

    我想知道 - 您是否要在对话框中创建一个可滚动面板?如果是这样,你可以设置一个 div 的 CSS 来实现你所需要的:

    .myScrollableBox {
        width: 450px;
        height: 400px;
        overflow: auto;
        border: 1px solid #000;
    }
    

    您可能还想在其中添加一些填充,这样文本就不会被边界卡住。

    【讨论】:

    • 我需要使用 iframe,因为内容将加载到另一个域中。我只是给你一个示例而不是整个代码,因为这在这里没有意义。你能找出为什么 iframe 内容没有加载吗?
    • 我认为问题在于您正在动态修改文档,但是 jQuery 在对话框中生成的副本只采用了外部 iframe 元素。
    • 是的。你说的是对的。它采用最初创建的外部 iframe。
    • 你能创建一个以src="http://stackoverflow.com"为属性的iframe,看看它是否嵌入到对话框中?
    • 啊,好的。试试这个:stackoverflow.com/questions/5660263/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 2011-04-13
    相关资源
    最近更新 更多