【发布时间】:2013-02-20 09:27:20
【问题描述】:
对于按下修改键的超链接点击行为是否有一些标准?
例如,如果按下 Ctrl,firefox 会创建一个新选项卡,如果按下 Shift,则会创建一个新窗口。
Opera 在Ctrl 上创建新的非焦点标签,并在Shift 上创建焦点。
是完全依赖于浏览器还是有一些指导方针,应该考虑?
【问题讨论】:
标签: html web w3c web-standards
对于按下修改键的超链接点击行为是否有一些标准?
例如,如果按下 Ctrl,firefox 会创建一个新选项卡,如果按下 Shift,则会创建一个新窗口。
Opera 在Ctrl 上创建新的非焦点标签,并在Shift 上创建焦点。
是完全依赖于浏览器还是有一些指导方针,应该考虑?
【问题讨论】:
标签: html web w3c web-standards
这取决于浏览器,并且比您预期的要复杂得多:还有中键单击(不会触发 onclick),还有 Apple 键盘,它是 Command+单击(不是 Ctrl+单击)、“在新选项卡中打开链接”上下文菜单、移动浏览器等等。
你说in a comment:
我正在为我的网站编写一个 js,我想知道用户期望什么行为,点击带有绑定 onClick 事件的超链接。
如果可能,建议的方法是在href 元素中提供一个实际的 URL,并让浏览器处理在新选项卡中打开它。您可以通过从事件处理程序中取消事件来覆盖简单左键单击的默认行为。
【讨论】:
你可以使用
target="_blank"
属性强制网页在新标签/窗口中打开(取决于浏览器)。例如:
<a href="www.google.com" taget="_blank">
-- 更新--
嗯,我做了一些调查,看不到任何关于超链接和修饰符的东西,我唯一能想到的就是处理 javascript 中的修饰键。
如果在新选项卡/窗口中弹出新页面是一个问题,您可以执行以下操作来禁用它。但是,如果用户禁用了 javascript,那么链接将根本不起作用,这并不理想。
<HTML>
<HEAD>
<TITLE>Event Modifiers</TITLE>
<SCRIPT LANGUAGE="JavaScript">
function checkMods(event){
if(event.shiftKey) {
alert("Shift, held.");
return false
}
else{
window.location = "http://www.google.com/"
return true
}
}
</SCRIPT>
</HEAD>
<BODY>
<H1>Event Modifiers</H1>
<HR>
<P>This link wont work if Shift is held while clicking.
<A HREF="javascript:void(0)" onClick="return checkMods(event)">
this link</A>
</BODY>
</HTML>
【讨论】: