这个是IE特定的(显然不再)。我们有非常简单的代码:
<div draggable="true">
<p>Text</p>
<input type="text"/>
</div>
在Chrome上它能正常工作,你可以选择<input>
中的所有文本,例如双击或点击并拖动。在IE10上,这两种操作都不起作用(不确定其他版本的IE是否也是如此)。有什么想法吗?
这个是IE特定的(显然不再)。我们有非常简单的代码:
<div draggable="true">
<p>Text</p>
<input type="text"/>
</div>
在Chrome上它能正常工作,你可以选择<input>
中的所有文本,例如双击或点击并拖动。在IE10上,这两种操作都不起作用(不确定其他版本的IE是否也是如此)。有什么想法吗?
这个问题在几个月前被报告为一个bug,目前正在考虑在未来的版本中解决。
其中一个问题是我们无法确定这个问题的影响。我记得在网上和GitHub上搜索依赖于这种模式的网站,但基本上没有找到。如果您知道任何使用此功能的网站,并因此在Internet Explorer 10和11中出现故障,则我将很乐意更新内部问题并请求立即采取行动。
话虽如此,如果您通过制表符聚焦到元素本身,然后使用箭头和Shift键进行选择,似乎确实可以选择文本。您还可以右键单击输入控件,这也会放置一个光标,然后可以使用键盘进行操作。虽然不是理想的解决方案,但在我们能够从浏览器端解决它之前,它可能足以满足要求。
对于我来说,Ben McCormick提到的方法在主要浏览器上都很有效(已在Internet Explorer 11、Firefox和Chrome上进行了测试)。 对于我的解决方案,您需要有一个标准来确定具有可拖动属性的父级元素(在我的情况下,我使用类名)。
function fixSelectable(oElement, bGotFocus)
{
var oParent = oElement.parentNode;
while(oParent !== null && !/\bdraggable\b/.test(oParent.className))
oParent = oParent.parentNode;
if(oParent !== null)
oParent.draggable = !bGotFocus;
}
<div class="draggable" draggable="true">
<p>Text</p>
<input type="text" onfocus="fixSelectable(this, true)" onblur="fixSelectable(this, false)"/>
</div>
我们观察到,如果我们模糊焦点然后再次聚焦,问题就会得到解决。然而,移动光标位置仍未完成。但至少对于单击来说是有效的。
$(document).on('mouseup', '#id input:text, textarea', function (event) {
$(this).blur();
$(this).focus();
});