contenteditable不在safari工作,但在chrome工作

Vin*_*rez 14 javascript css safari jquery contenteditable

我有一个奇怪的问题......

这可以按照预期在chrome中运行,但在safari中它只会...发光但不会对键输入做出反应..

这是触发文本版本的方法:

var namebloc = $(event.currentTarget).find('.column_filename');
var oldvalue = namebloc.html();

namebloc.attr('contentEditable', true).focus();
document.execCommand('selectAll',false,null);

namebloc.blur(function() 
    {
    $(this).attr('contentEditable', false).unbind( "keydown" ).unbind( "blur" );
    var newvalue = $(this).html().replace('"','&quot;').replace(/(<([^>]+)>)/ig,"");
    console.log(newvalue);
    });
namebloc.keydown(function(e)
    {
    if(e.keyCode==27){ $(this).html(oldvalue);}//escape
    if(e.keyCode==13){  $(this).blur(); }//enter    
    });
Run Code Online (Sandbox Code Playgroud)

这是Chrome中的屏幕截图,当它按预期工作时... 在此输入图像描述

这是safari中的结果..对键盘或鼠标选择没有反应: 在此输入图像描述

知道为什么以及如何在野生动物园中解决这个问题?

这是调用方法之前的HTML:

<span field="filename" class="column_filename" style="width:763px;">eiffel (2).JPG</span>
Run Code Online (Sandbox Code Playgroud)

这是在它被调用的时候(与截图同时)

<span field="filename" class="column_filename" style="width:763px;" contenteditable="true">eiffel (2).JPG</span>
Run Code Online (Sandbox Code Playgroud)

sea*_*ean 60

Safari 默认使用user-selectCSS设置none.您可以使用:

[contenteditable] {
    -webkit-user-select: text;
    user-select: text;
}
Run Code Online (Sandbox Code Playgroud)

使它工作.

  • Safari 是新的 IE。我一遍又一遍地确信这一点。感谢您的回答,节省时间! (6认同)
  • 这实际上回答了这个问题,它让我度过了整整一个绝望的夜晚...感觉很糟糕我不能给你一个以上的赞成! (3认同)
  • 这实际上是问题的正确答案 (3认同)
  • 刚刚发现你的答案,选择它作为正确的答案 (2认同)