我必须使用 javascript 来制作链接,而不是出于几个不重要的原因,我希望它的行为就像我没有使用它一样。影响不是很容易,但我希望能够在单击打开新窗口时按住 shift 并在他们按住 ctrl 时在新选项卡中打开它。我该怎么做?此外,它必须与 IE9 兼容。
[编辑] 另外,这将在 iframe 中
我必须使用 javascript 来制作链接,而不是出于几个不重要的原因,我希望它的行为就像我没有使用它一样。影响不是很容易,但我希望能够在单击打开新窗口时按住 shift 并在他们按住 ctrl 时在新选项卡中打开它。我该怎么做?此外,它必须与 IE9 兼容。
[编辑] 另外,这将在 iframe 中
我猜你想要这样的东西:
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;
}
});
</p>
HTML
<span id="link">Link to stackoverflow</span>
<strong>不带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;
}
});
</p>
将击键事件侦听器绑定到窗口或文档,并使用它的回调函数来执行您需要的任何操作。
如果您使用 jquery,则更容易制作更可靠的击键侦听器,恕我直言。http://blog.cnizz.com/2008/10/27/javascript-key-listener/
所以,这就是你想要的: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
}
});