Javascript:在锚标签中获取单词选择

时间:2014-03-21 02:47:01

标签: javascript

我目前正在为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库我可以用来做它。

请帮助我!

1 个答案:

答案 0 :(得分:0)

我认为问题可能是您正在使用onclick事件。我仍然不能100%确定您期望的行为,但我确实注意到使用onclickonmouseup之间存在一个有趣的区别。我把一个演示放到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;
    }
}