Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery Cleditor wysiwyg文本编辑器:keyup()适用于webkit浏览器,但不适用于Firefox或IE_Javascript_Jquery_Dom_Iframe_Cleditor - Fatal编程技术网

Javascript jQuery Cleditor wysiwyg文本编辑器:keyup()适用于webkit浏览器,但不适用于Firefox或IE

Javascript jQuery Cleditor wysiwyg文本编辑器:keyup()适用于webkit浏览器,但不适用于Firefox或IE,javascript,jquery,dom,iframe,cleditor,Javascript,Jquery,Dom,Iframe,Cleditor,我正试图跟进前面的Stackoverflow问题,该问题涉及如何在外部HTML元素(如)中显示来自Cleditor文本框的内容。以下是解决我在webkit浏览器(而不是Firefox或IE)中的问题的方法: 下面是小提琴上的代码: <textarea id="input" name="input"></textarea> <p id="x"></p> <script> $("#input").cleditor(); $(

我正试图跟进前面的Stackoverflow问题,该问题涉及如何在外部HTML元素(如
)中显示来自Cleditor文本框的内容。以下是解决我在webkit浏览器(而不是Firefox或IE)中的问题的方法:

下面是小提琴上的代码:

<textarea id="input" name="input"></textarea>
<p id="x"></p>  

<script>
  $("#input").cleditor();

  $(".cleditorMain iframe").contents().find('body').bind('keyup',function(){
    var v = $(this).text(); // or .html() if desired
    $('#x').html(v);
  });
</script>

$(“#输入”).cleditor(); $(“.cleditorMain iframe”).contents().find('body').bind('keyup',function(){ var v=$(this.text();//或.html(),如果需要 $('#x').html(v); });

我已经读到我需要使用“window.top….来访问主页并传递它,因为并非所有浏览器都支持.contents()”,但我不确定如何使用window.top来实现这一目的,我希望有人能够对这一主题有所了解

既然我回答了这个问题,我想我也会回答这个问题;)

这适用于Chrome和Firefox(我没有访问IE的权限):

更新

这也适用于Chrome和Firefox。也许我也是

$("#input").cleditor();

$( $(".cleditorMain iframe")[0].contentDocument ).bind('keyup', function(){
    var v = $(this).text(); // or .html() if desired
    $('#x').html(v);
});

cleditor文档声明它确实有一个“更改”事件,它声称与“keyup”事件一起工作,但不幸的是,在我的测试中,它在Firefox 7上没有按预期工作(需要从文本编辑器中单击)

Jsfiddle:

代码:

还有另一个StackOverflow问题也问了同样的问题,其中用户Ling建议修改插件以添加您自己的功能:

编辑: 基于您对上述问题的评论,所以问题结果不起作用,我已经修改了下面的代码。 这在IE9和IE9的“IE8”开发模式下工作

另一个编辑:要获取HTML,必须在iframe中查找body,如
$(this).find(“body”).HTML()
。请参阅下面的代码。 JSFiddle:


嗨,diglland,是的,我可以确认Wesley的结果,不幸的是,你更新的代码在IE中不起作用,更多想法?谢谢使用“contentDocument”的另一个关键问题是它不能与$this.html()一起使用;因此,文本格式(粗体、颜色等)丢失了,这在chrome和firefox中也是如此,糟糕!您好,ima007谢谢您的建议,我已经尝试过这个修复程序,但不幸的是,在可供下载的cleditor.js的第100行中似乎有一个bug,因此用户Ling的修复程序不起作用。为了让这个插件工作,我必须使用最小化的文件cleditor.min.js,它不能像Ling建议的那样被修复。嘿,Tim,我已经对IE进行了调整。它在IE9的IE模式下工作,尽管我还不确定是否实际安装了IE8——如果我得到一个,我会更新。嘿,ima007,不幸的是使用“contentWindow”不适用于html()。我想保留$('x'中的格式)如果有任何应用。对此有什么建议吗?谢谢-蒂姆请参阅我的最新编辑。你必须在iframe中搜索正文。很棒的Ima007!你的小提琴#84可以在chrome、firefox和IE9中使用。在IE9中,由于某种原因,粗体和斜体不会在$('x')中显示,但在其他方面它是完美的。再次感谢-蒂姆
$("#input").cleditor();

$( $(".cleditorMain iframe")[0].contentDocument ).bind('keyup', function(){
    var v = $(this).text(); // or .html() if desired
    $('#x').html(v);
});
var cledit = $("#input").cleditor()[0];

cledit.change(function(){
    var v = this.$area.context.value;
    $('#x').html(v);
});
$(document).ready(function(){

 var cledit = $("#inputcledit").cleditor()[0];
 $(cledit.$frame[0]).attr("id","cleditCool");

var cleditFrame;
if(!document.frames)
{
   cleditFrame = $("#cleditCool")[0].contentWindow.document;
}
else
{
    cleditFrame = document.frames["cleditCool"].document;
}

$( cleditFrame ).bind('keyup', function(){
    var v = $(this).text(); 
    $('#x').html(v);
});

});
var cledit = $("#inputcledit").cleditor()[0];
$(cledit.$frame[0]).attr("id","cleditCool");

var cleditFrame;
if(!document.frames)
{
   cleditFrame = $("#cleditCool")[0].contentWindow.document;
}
else
{
    cleditFrame = document.frames["cleditCool"].document;
}

$( cleditFrame ).bind('keyup', function(){
        var v = $(this).find("body").html();
        $('#x').html(v);
});

$("div.cleditorToolbar, .cleditorPopup div").bind("click",function(){
      var v = $( cleditFrame ).find("body").html();
      $('#x').html(v);
});