Javascript 左下还是右下?
首先,我不是在寻找jQuery解决方案,只是在元素内部寻找简单的纯Javascript代码 假设我们有以下html代码:Javascript 左下还是右下?,javascript,html,jquery,dom-events,onmousedown,Javascript,Html,Jquery,Dom Events,Onmousedown,首先,我不是在寻找jQuery解决方案,只是在元素内部寻找简单的纯Javascript代码 假设我们有以下html代码: <select onmousedown=" ??? ">...</select> 。。。 我希望元素内部有一个简单的脚本来显示弹出消息alert(),其中包含按下哪个按钮的信息,以及元素与文档的相对位置是什么-类似于jQuery中的offset()。.. 编辑 ..创建一个具有某个名称的JavaScript函数,然后在传递事件的
<select onmousedown=" ??? ">...</select>
。。。
我希望元素内部有一个简单的脚本来显示弹出消息alert()
,其中包含按下哪个按钮的信息,以及元素与文档的相对位置是什么
-类似于jQuery中的offset()
。..
编辑
..
创建一个具有某个名称的JavaScript函数,然后在传递事件的onmousedown
事件上调用它,该对象可在函数内部使用
HTML
如果您计划使用jQuery,那么可以使用此脚本
$('select').mousedown(function(e){
alert("Keycode of key pressed: " + e.which);
//Inside the handler this points to the select DOM element
alert("Offset-X = " + $(this).offset().left);
alert("Offset-Y = " + $(this).offset().top);
});
更新:
如果你想要内联脚本,那么试试这个
<select onmousedown="function(e, obj){ e = e || window.event;alert('Keycode of key pressed: ' + (e.keyCode || e.which));alert('Offset-X = ' + obj.offsetLeft);alert('Offset-Y = ' + obj.offsetTop);}(event, this);">...</select>
。。。
编辑
在继续之前,您可能希望阅读本文:
单击具有许多属性的文档分派,例如,告诉您按下了哪个鼠标按钮,告诉您单击时是否按下了控制键
请注意,按钮并不是真正的“左”和“右”,因为它们可以根据用户偏好进行更改,您想知道的是,它是主按钮(通常是左按钮,但可能是右按钮,或者可能是与其他指向设备完全不同的按钮)还是次按钮(通常是右按钮,但也可能是任何按钮)
一些播放代码:
<script>
function clickDetails(e) {
e = e || window.event;
var msg = [];
for (var p in e) {
msg.push(p + ': ' + e[p]);
}
document.getElementById('msg').innerHTML = msg.join('<br>');
}
window.onload = function() {
document.getElementById('sp0').onmousedown = clickDetails;
}
</script>
<div>
<span id="sp0">click me</span>
<br>
<span id="msg"></span>
</div>
功能点击详情(e){
e=e | | window.event;
var msg=[];
对于(e中的风险值p){
msg.push(p+':'+e[p]);
}
document.getElementById('msg').innerHTML=msg.join('
');
}
window.onload=函数(){
document.getElementById('sp0')。onmousedown=单击详细信息;
}
点击我
编辑
啊,见鬼:
<select onmousedown="alert('Button: ' + event.button
+ '\nPosition: ' + this.offsetLeft
+ ',' + this.offsetTop);">
MouseEvent.button在不同浏览器中具有不同的值
MouseEvent.button == 1// means left key in ie6~ie8
MouseEvent.button == 0// means left key in ie9&others
“我不是在寻找jQuery解决方案”*放置jquery标记*:P
@Šime Vidas::这意味着我正在寻找jquery替代代码:D::我的意思是在元素内部的脚本,所以会有什么东西取代???在…
代码中。只需将脚本移动到onmousedown属性中即可::我无法为函数分配任何新名称,也无法创建新的全局变量。您的代码也不检查开关按钮是否按下,如果主(左)或其他…再次,只要将脚本移动到onmousedown属性中,在这种情况下就不需要使用e | | window.event
,因为您正在从侦听器传递event
。在IE中,它不起作用,所以我们必须使用window.event来访问它。@ShankarSangoli::我需要不使用任何新函数名称的解决方案,由于其他合作伙伴需要将此代码添加到其现有页面中,因此为了消除函数名和/或变量冲突的风险,我需要解决方案,而无需为函数和/或全局变量指定某些名称。我的意思是在元素内部编写脚本,这样就可以替换?
中的。
代码。@ShankarSangoli你错了。当你写<。。。onclick=“fn(event)”>
然后在IE中,标识符event
解析为窗口。event
就是传递给fn()
。在Mozilla和其他浏览器中,它解析为处理程序的事件对象,因此它们也会传递对相关事件的引用。@RobG-我说的是IE7及以下版本。可能它在IE8+中工作只是为了让你有一天,在IE中“左”键是1表示mousedown和mouseup,但是0表示click、dblclick和contextmenu事件。元素没有可用的id,代码需要在元素内部,没有新的全局变量,没有新函数的名称。然后将代码放入处理程序中,以上只是为了帮助你。我不会为你写代码的。
<script>
function clickDetails(e) {
e = e || window.event;
var msg = [];
for (var p in e) {
msg.push(p + ': ' + e[p]);
}
document.getElementById('msg').innerHTML = msg.join('<br>');
}
window.onload = function() {
document.getElementById('sp0').onmousedown = clickDetails;
}
</script>
<div>
<span id="sp0">click me</span>
<br>
<span id="msg"></span>
</div>
<select onmousedown="alert('Button: ' + event.button
+ '\nPosition: ' + this.offsetLeft
+ ',' + this.offsetTop);">
MouseEvent.button == 1// means left key in ie6~ie8
MouseEvent.button == 0// means left key in ie9&others