我目前正在为Chrome编写附加组件。 我想通过热键+鼠标点击选择单词。使用普通文本,我可以使用window.getSelection(),如下面的
var s = window.getSelection();
s.modify('extend','backward','word');
var firstPart = s.toString();
s.modify('extend','forward','word');
var lastPart = s.toString();
s.modify('move','forward','character');
var txt = firstPart + lastPart;
但是,如果我在链接中使用单词进行尝试,它就无法工作。它不起作用。如果有任何方法或javascript库我可以用来做它。
请帮助我!
答案 0 :(得分:0)
我认为问题可能是您正在使用onclick事件。我仍然不能100%确定您期望的行为,但我确实注意到使用onclick
和onmouseup
之间存在一个有趣的区别。我把一个演示放到JSFiddle中:http://jsfiddle.net/EGmV3/1。
HTML:
<body>
<p>Hold down 'F9' then select this text...</p>
<p><a href="#">Now try it with this text..</a></p>
</body>
JavaScript的:
var hotKeyIsDown = false;
window.onkeydown = function(ev) {
hotKeyIsDown = false;
if(ev.which === 120) //F9 key
hotKeyIsDown = true;
}
window.onkeyup = function(ev) {
hotKeyIsDown = false;
}
// try changing this to `window.onclick'
window.onmouseup = function (){
if(hotKeyIsDown) {
var s = window.getSelection();
s.modify('extend','backward','word');
var firstPart = s.toString();
s.modify('extend','forward','word');
var lastPart = s.toString();
s.modify('move','forward','character');
var txt = firstPart + lastPart;
alert("You were selecting '" + txt + "'");
return false;
}
}