event.offsetX
Здраствуйте.
Только начинаю изучать JS, вот написал небольшой скрипт и стразу столкнулся с непреятностью.
<html>
<head>
<script type="application/x-javascript">
function clk() {
alert(event.offsetX);
}
</script>
</head>
<body>
<form>
<input type="button" name="but" value="click" id="but" onclick="clk()">
</form>
</body>
</html>
К сожелению этот скрипт у меня работает только в opera.10, так же узнал что использования event не рекомендуется уже. Вопрос, как кросбраузерно узнать координаты курсора в нутри объекта? |
|
Спасибо за сылку. Переделал скрипт, но почемуто не работает.
<html>
<head>
<script langauge = "application/x-javascript">
document.getElementById('mybut').onclick=function()
{
e = e || window.event
if (e.pageX == null && e.clientX != null ) {
var html = document.documentElement
var body = document.body
e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0)
e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0)
alert(e.pageX+':'+e.pageY)
}
}
</script>
</head>
<body>
<form>
<input type="button" value="Жми" id="mybut"/>
</form>
</body>
</html
Как я понял надо переменную e передать в функцию, но как? |
Цитата:
…onclick=function(e) И вы выполняете поиск элемента по идентификатору до того, как он появится в документе. Нужно отложить выполнения скрипта до окончания загрузки документа, например так:
window.onload = function() {
document.getElementById('mybut').onclick = function(e) {
…
}
};
Или разместить скрипт после элемента, который используете, а не в внутри <head> Цитата:
<script type="text/javascript"> |
Вроде всё поправил, но воз и ныне там. if не сробатывает.
<html>
<head>
<script langauge = "application/x-javascript">
window.onload = function() {
document.getElementById('mybut').onclick=function(e)
{
e = e || window.event
if (e.pageX == null && e.clientX != null ) {
var html = document.documentElement
var body = document.body
e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0)
e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0)
alert(e.pageX+':'+e.pageY)
}
}
};
</script>
</head>
<body>
<form>
<input type="button" value="Жми" id="mybut">
</form>
</body>
</html>
|
Наверное, не внимательно читали статью, все что у вас внутри if выполнится только в Internet Explorer, а в W3C-совместимых браузерах уже есть свойства e.pageX и e.pageY и ничего дополнительного делать не нужно:
window.onload = function() {
document.getElementById('mybut').onclick = function(e) {
e = e || window.event;
if(e.pageX == null && e.clientX != null) {
var html = document.documentElement, body = document.body;
e.pageX = e.clientX + (html && html.scrollLeft || body && body.scrollLeft || 0) - (html.clientLeft || 0);
e.pageY = e.clientY + (html && html.scrollTop || body && body.scrollTop || 0) - (html.clientTop || 0);
}
alert([e.pageX, e.pageY]);
};
};
|
Большое спасибо Octane.
|
Цитата:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>javascript</title> <style type="text/css"> #result{ background:#2AF06C; margin-left:1500px; width:300px; padding:20px; position:absolute; } *{ cursor:crosshair; } </style> <script type="text/javascript"> window.onload=function () { var img=document.getElementById("img"); /*dvijenie mishki*/ img.onmousemove = foo; /*najatie mishki*/ img.onmousedown = foo; /*rasjatie mishki*/ img.onmouseup = foo; /*najatie klavishi*/ img.onkeydown = foo; /*rasjatie klavishi*/ img.onkeyup = foo; } function foo(evt) { if(!evt) evt = event; var result=document.getElementById("result"); result.innerHTML = "x: " + evt.x + "<br>"+ "y: " + evt.y + "<br>"+ "clientX: " + evt.clientX + "<br>"+ "clientY: " + evt.clientY + "<br>"+ "offsetX: " + evt.offsetX + "<br>"+ "offsetY: " + evt.offsetY + "<br>"+ "screenX: " + evt.screenX + "<br>"+ "screenY: " + evt.screenY + "<br>"+ "button: " + evt.button + "<br>"+ "keyCode: " + evt.keyCode + "<br>"+ "altKey: " + evt.altKey + "<br>"+ "shiftKey: " + evt.shiftKey + "<br>"+ "ctrlKey: " + evt.ctrlKey + "<br>"/* + "srcElement: " + evt.srcElement.tagName; */ } </script> </head> <body> <h1>privet</h1> <div id="result">234</div> <img src="images/1.jpg" id="img"> </body> </html> |
| Часовой пояс GMT +3, время: 12:33. |