我想将事件处理程序附加到<span>
处理当前选择的节点,但在单击事件触发之前,看起来好像选择已被浏览器清除(Chrome 16.0.912.63)。
我可以通过将处理程序附加到 以稍微凌乱的方式解决此问题onmousedown
,但我宁愿不必那样做。
这是一个说明问题的简短 HTML 示例(需要 jQuery):
<span class="paste">PASTE</span>
<textarea id="selected"></textarea>
<script type="text/javascript">
$('.paste').click(function(e) {
var txt = window.getSelection(); // works only in Chrome, Safari, FF
$('#selected').val(txt);
e.stopPropagation();
});
</script>
所需的行为是我能够使用鼠标选择一些文本,然后单击单词“PASTE”以将所选区域的内容插入到 textarea 中。看起来好像在单击处理程序触发之前清除了选择。如果我使用,这段代码就可以正常工作:
<a class="paste" href="#">PASTE</a>
而不是 span 元素,或者如果我 bind onmousedown
,但我无法控制元素,所以我不能只使用 an<a>
而不是 a <span>
。