javascript - 使用 jQuery.append 插入 iframe 的内容后消失

标签 javascript jquery iframe cross-browser

请考虑以下代码:

<html>
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js"></script>
</head>
<body>

<div id="dlgDiv" style="width:202px; height:72px; border: solid 1px grey"></div>
<iframe id="iView" style="width: 200px; height:70px; border: dotted 1px red" frameborder="0"></iframe>

<script type="text/javascript">
    jQuery(document).ready(function() {

        var doc = document.getElementById("iView").contentWindow.document;

        doc.designMode = "On"

        doc.open()
        doc.write("<html><head></head><body class='some-class'>Some test text</body></html>");
        doc.close();

        jQuery("#iView").appendTo("#dlgDiv")
    })
</script>
</body>
</html>

在 IE 中,它工作正常,并在框架中保留测试(“一些测试文本”),并将其保持在设计模式下。 在 FF/Chrome/Opera 中,它会清除 iframe 的所有内容 - 如果您使用 FireBug 检查它的 DOM,您可以看到 iframe.body 丢失了它的“some-class”类以及所有文本,并且它不处于设计模式。 有什么想法如何克服这个问题?最初的问题是所有富文本编辑器都无法在这些浏览器中的 jQuery.dialog 中工作,我将问题追溯到上述事实......

这对我来说是一个真正的表演障碍,他将非常感谢任何帮助!

谢谢你, 安德烈

最佳答案

需要刷新移动(appendTo)并且找不到 iframe:

<html>
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js"></script>
</head>
<body>

<div id="dlgDiv" style="width:202px;height:72px;border:solid 1px grey"></div>
<iframe id="iView" style="width:200px;height:70px;border:dotted 1px red" frameborder="0"></iframe>

<script type="text/javascript">

jQuery(document).ready(function() {

    $("#iView").appendTo("#dlgDiv");
    setTimeout(function(){
        var iBody = $("#dlgDiv").find('#iView').contents().find("body"); // <-----
        iBody.append("<div>my bad html</div>"); // old container
        iBody.empty(); // empty body in iframe
        iBody.append("Some test text"); //add container
        iBody.append("<div>or something right</div>"); //add container
        iBody.attr("class", "some-class"); //add class to body
    }, 100);

})

</script>
</body>
</html>

版本:因为它是可以理解的

关于javascript - 使用 jQuery.append 插入 iframe 的内容后消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1765490/

相关文章:

Javascript - 检查用户是否正在编辑文本输入

javascript - Ember.JS 路由与 Google map

javascript - Jquery:未捕获的语法错误:意外的标识符

javascript - 验证轨道中的空间

javascript - 嵌入雅虎!使用 IE11 的视频失败

javascript - 在点击时播放iframe视频(带有弹出窗口),并在弹出窗口关闭时暂停

javascript - 为什么当我调用函数 "intervalId"函数时,我的变量 "StopTimer"没有更新值?

javascript - 如何选择另一个元素内的一个元素?

facebook - 10 月 1 日到来,我可以在启用 SSL 的 FB 应用程序中使用 iframe 非 SSL 站点吗?

javascript - AJAX:responseXML 在 IE 11 中为空