2009-11-19 97 views
1

请考虑下面的代码在插入之后消失:iframe的内容使用jQuery.append

<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失去了它的“某些类”类以及所有文本,并且它不处于设计模式。 任何想法如何克服这个问题?原来的问题是,所有富文本编辑器都无法在这些浏览器中的jQuery.dialog中工作,并且我将问题追踪到上述事实...

这对我来说是一个真正的显示屏,任何帮助都会他高度赞赏!

谢谢 安德烈

回答

-1

注意到刷新运动(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> 

:人们普遍理解

+0

抱歉,我不明白你的回答与我的问题有什么关系。因此-1。 iframe不仅丢失了内容,而且还丢失了designMode值和丰富的文本编辑器呈现不可用 – Andrey 2009-11-19 20:13:09

+0

从我所看到的你不确定的javascript和jQuery中,我将通过修改来添加类。 – 2009-11-19 20:36:38