【问题标题】:Safari contenteditable div focusSafari contenteditable div 焦点
【发布时间】:2018-09-27 11:21:25
【问题描述】:

当我点击一个内容可编辑的 div 时,表示我可以写作的垂直线在焦点上消失了。我必须单击两次才能使其可见并能够书写。

只有在以下情况下才会失败:
- Safari(最新版本 12.0。我无法检查旧版本)
- contenteditable div(在表单中效果很好)
- 专注
- 仅当用户单击文本时。如果用户点击 div 但在文本之外,它会很好地工作。

为了找到问题,我简化了很多案例。我不知道还能尝试什么。
- 这只是 Safari 中的一个错误吗?
- 知道如何让它运作良好吗?

$(function(){
				
	$(".text").focus(function () {
		if ( ($(this).text() == "one thing") ) {
			$(this).text("");
		}
	});

	$(".text").blur(function () {
		if ($(this).text() == "") {	
			$(this).text("one thing");
		}
	});

})
.text {
	width: 50%;
	padding: 6px 10px;
	background-color: whiteSmoke;
	outline:none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="text" contenteditable="true">one thing</div>

【问题讨论】:

  • 我刚刚在 Safari 版本 11.0.3 上进行了测试,它运行良好
  • @Enzo:我又试了一次,在我的电脑和 Safari 12 中,如果我单击一下,我将无法写入。我需要点击两次

标签: javascript jquery html css


【解决方案1】:

尝试过去发布的这个解决方案:

Safari 默认将用户选择的 CSS 设置为无。您可以使用:

[contenteditable] {
    -webkit-user-select: text;
    user-select: text;
}

来源:contenteditable not working in safari but works in chrome

【讨论】:

【解决方案2】:

要添加到已经给出的解决方案中,这是正确的,您需要将 [contenteditable] 替换为 css 文件中的类选择器。因此,无论哪个元素是 contenteditable,您都可以将其放置在那里。例如:

.content-to-edit-fake-class-name {
-webkit-user-select: text;
user-select: text;
}

【讨论】:

    猜你喜欢
    • 2011-04-23
    • 1970-01-01
    • 2011-01-24
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 2013-05-25
    相关资源
    最近更新 更多