检测没有文本框的击键?

时间:2012-04-09 04:59:21

标签: javascript html hyperlink window internet-explorer-9

我必须使用javascript来制作链接,而不是出于几个不重要的原因,我希望它表现得像即使我不使用它。这种影响并不容易,但我希望能够在点击打开新窗口时按住shift并在新选项卡中打开它,如果他们按住ctrl。我该怎么做?此外,它必须与IE9兼容。

[edit]此外,这将是一个iframe

3 个答案:

答案 0 :(得分:1)

将键击事件侦听器绑定到窗口或文档,并使用它的回调函数来执行您需要的任何操作。

如果你使用jquery,它会更容易制作一个更可靠的击键监听器,imho。 http://blog.cnizz.com/2008/10/27/javascript-key-listener/

答案 1 :(得分:1)

我猜你想要这样的东西:

<强>的jsfiddle

http://jsfiddle.net/MXuVY/3/

<强>的JavaScript

var ctrlPressed = false;
$('#link').click(function () {
    var link = 'http://stackoverflow.com/';
    if (ctrlPressed) {
        window.open(link,'_blank');
    } else {
        window.location = link;
    }
    return false;
});
$(document).keydown(function (e) {
    if (e.keyCode === 17) {
        ctrlPressed = true;
    }
});
$(document).keyup(function (e) {
    if (e.keyCode === 17) {
        ctrlPressed = false;
    }
});

<强> HTML

<span id="link">Link to stackoverflow</span>​

没有jQuery的版本

<强>的jsfiddle

http://jsfiddle.net/MXuVY/6/

<强>的JavaScript

function addEvent(el, eType, fn, uC) {
    if (el.addEventListener) {
        el.addEventListener(eType, fn, uC);
        return true;
    } else if (el.attachEvent) {
        return el.attachEvent('on' + eType, fn);
    } else {
        el['on' + eType] = fn;
    }
}

var ctrlPressed = false,
    a = document.getElementById('link'),
    link = 'http://stackoverflow.com/';

addEvent(a, 'click', function () {
    if (ctrlPressed) {
        window.open(link,'_blank');
    } else {
        window.location = link;
    }
    return false;
});
addEvent(document, 'keydown', function (e) {
    if (e.keyCode === 17) {
        ctrlPressed = true;
    }
});
addEvent(document, 'keyup', function (e) {
    if (e.keyCode === 17) {
        ctrlPressed = false;
    }
});

答案 2 :(得分:0)

所以,这就是你想要的:http://jsfiddle.net/DerekL/V8yzF/show

$("a").click(function(ev) {
    if (ev.ctrlKey) {                     //If ctrl
        window.open(this.attr("href"));
        retrun false;
    } else if (ev.shiftKey) {            //If shift
        window.open(this.attr("href"),"_blank", "width=400,height=300");
        retrun false;
    } else {                             //If nothing
        //do nothing
    }
});​