iFrame WYSIWYG字体大小不会重置

时间:2016-07-08 23:34:45

标签: javascript jquery iframe

这是我的jsFiddle:https://jsfiddle.net/wsounka3/

当我在WYSIWYG中更改字体大小然后删除所有书面文字并再次开始书写时,它会保留最后一个字体大小而不是重新开始。

如何让iframe“忘记”最后一个字体大小?

代码:

function iwrap(elem,iwin,idoc){
  var element = idoc.createElement(elem);
  var sel = iwin.getSelection();
  if(sel.rangeCount){
     var range = sel.getRangeAt(0).cloneRange();
     range.surroundContents(element);
     sel.removeAllRanges();
     sel.addRange(range);
  }
}

$('#smaller').click(function(){
    iwrap('small',iwin,idoc);
  update_code();
});

$('#larger').click(function(){
    iwrap('big',iwin,idoc);
  update_code();
});

附带问题:我发现奇怪的是,通过将文本包含在<big><small>标记中,它决定将其转换为像素。任何人都可以解释为什么会这样做吗?

1 个答案:

答案 0 :(得分:2)

因为当您单击“删除”时,您将删除文本内容而不是包装标记。您可以在没有文字内容时清除标记 - 此外还有一个Chrome错误,该错误会保留最后一个元素大小,因此在删除接缝之前将其包裹在[span]标记中以解决该问题

由于你在keyup上调用update_code,只需在那里添加一个清理检查

function update_code(){
    var $body = $(idoc).contents().find('body');
    if ($.trim($body.text()).length == 0) {
       iwrap('span', iwin, idoc); // chrome bug
       $body.empty();
    }

    var icontent = $body.html();
    $('div#code').html(icontent);
}

BIG / SMALL to SPAN:尺寸似乎也是一个自动镀铬的东西