我在contenteditable中有一个“ mouseup”事件处理程序,可检查是否选择了文本。如果在键入后突出显示文本,则一切都很好,但是如果再次单击(取消选择文本),则控制台将显示range.toString()
是相同的,尽管没有选择任何文本。
http://jsfiddle.net/xpvt214o/857876/
在contenteditable中键入一些内容,然后选择它,然后再次单击(取消选择)并检查控制台。两个console.logs
将相同。
我需要区分实际选择和取消选择。如果这是正常行为,那么我该如何区分这两个事件,或者如何以不同的方式来防止这种情况发生?
答案 0 :(得分:2)
实际上,Chrome会在鼠标事件后 更改活动选择。
您可以在此事件中添加黑客超时,这可能会中断一些时间...
或者您可以使用Selection API的selectionchange事件。
每次选择更改时都会触发此事件:
$(document).on('selectionchange', function() {
console.log(getSelection().toString());
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div contenteditable="true" id="container">Select this dummy text</div>
增加的好处是它也可以用于键盘选择。
要了解此事件是选择还是取消选择,您可以检查选择内容是否为空,或者当前范围是否合拢:
$(document).on('selectionchange', function() {
var isUnselect = getSelection().getRangeAt(0).collapsed;
viewer.style.backgroundColor = isUnselect ? 'red' : 'green';
})
#viewer{
width: 20px;
height: 20px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="viewer"></div>
<div contenteditable="true" id="container">Select this dummy text</div>
答案 1 :(得分:0)
请检查是否有帮助。
$TemplateJSON = Convertfrom-json ([IO.File]::ReadAllText("TemplateJSON.json"))
$RoleFile = Import-CSV "CSVFile.csv" -Delimiter ','
[int]$Row = 0
Foreach ($Line in $RoleFile)
{
$Row = $Row + 1
$NewJSON = $TemplateJSON
$NewJSON.adhocUARs = $Line.ResourceName
$NewJSON.roleFullPath= $Line.RoleFullPath
$RolePath = "D:\\DummyFolder\"
$JSONPath = $RolePath + "patch.json"
Convertto-JSON $NewJSON | Out-file -Encoding "UTF8" $JSONPath
}