0

我必须使用 javascript 来制作链接,而不是出于几个不重要的原因,我希望它的行为就像我没有使用它一样。影响不是很容易,但我希望能够在单击打开新窗口时按住 shift 并在他们按住 ctrl 时在新选项卡中打开它。我该怎么做?此外,它必须与 IE9 兼容。

[编辑] 另外,这将在 iframe 中

4

3 回答 3

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;
    }
});

​</p>

HTML

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

​<strong>不带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;
    }
});

​</p>

于 2012-04-09T05:12:03.170 回答
1

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

如果您使用 jquery,则更容易制作更可靠的击键侦听器,恕我直言。http://blog.cnizz.com/2008/10/27/javascript-key-listener/

于 2012-04-09T05:00:47.500 回答
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
    }
});​
于 2012-04-09T05:09:06.557 回答