Javascript:在jQuery对话框中,iframe的designMode不能与FF一起使用

时间:2009-11-19 15:43:20

标签: javascript firefox designmode

这是示例代码(完全正常 - 只需复制到一个空的html文件,它就可以了):

<html>
<head>
<title></title>
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/redmond/jquery-ui.css" type="text/css" media="screen" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.js"></script>
<script language="javascript" type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/jquery-ui.js"></script>
<script type="text/javascript" language="javascript">
    function Init()
    {
        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();
    }
</script>
</head>
<body>

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

<script type="text/javascript">

    var dlg = null;
    jQuery(document).ready(function() {

        Init();

        dlg = jQuery("#dlgDiv").dialog({
            autoOpen: false,
            bgiframe: true,
            modal: true,
            width: 400
        })

        dlg.dialog('open');
    })

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

现在,当我在IE中运行时,我可以编辑iframe的内容;也使用IE Developer Toolbar我可以看到iframe的主体保留了我指定的类“some-class”。 但是,当在FF中运行它时,iframe不可编辑,并且当用firebug检查其DOM时,我看到iframe的主体是空的并且没有类。因此,FF对话框看起来像div的浅层副本,而不是使用div本身(dlgDiv)进行对话,或类似的东西......

基本上这意味着没有基于javasript的富文本编辑器可以在FF的jQuery对话框中工作(以及btw谷歌浏览器) - 这是一个很大的问题(到目前为止我已经尝试了两个,这就是我开始研究的方式)这个问题)!

有关我如何处理此问题的任何想法/意见/建议,我们非常感谢!

谢谢你, 安德烈

1 个答案:

答案 0 :(得分:0)

init应该在打开之后

var dlg = null;
jQuery(document).ready(function() {



    dlg = jQuery("#dlgDiv").dialog({
            autoOpen: false,
            bgiframe: true,
            modal: true,
            width: 400
    })

    dlg.dialog('open');

    Init();
})