2009-11-19 78 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