我必须使用javascript来制作链接,而不是出于几个不重要的原因,我希望它表现得像即使我不使用它。这种影响并不容易,但我希望能够在点击打开新窗口时按住shift并在新选项卡中打开它,如果他们按住ctrl。我该怎么做?此外,它必须与IE9兼容。
[edit]此外,这将是一个iframe
答案 0 :(得分:1)
将键击事件侦听器绑定到窗口或文档,并使用它的回调函数来执行您需要的任何操作。
如果你使用jquery,它会更容易制作一个更可靠的击键监听器,imho。 http://blog.cnizz.com/2008/10/27/javascript-key-listener/
答案 1 :(得分:1)
我猜你想要这样的东西:
<强>的jsfiddle 强>
<强>的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 强>
<强>的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
}
});