Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.09.2009, 17:48
Новичок на форуме
Отправить личное сообщение для poweroff Посмотреть профиль Найти все сообщения от poweroff
 
Регистрация: 10.09.2009
Сообщений: 4

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 не рекомендуется уже. Вопрос, как кросбраузерно узнать координаты курсора в нутри объекта?
Ответить с цитированием
  #2 (permalink)  
Старый 11.09.2009, 17:58
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Координаты мыши: clientX(Y)/pageX(Y)
Ответить с цитированием
  #3 (permalink)  
Старый 11.09.2009, 20:05
Новичок на форуме
Отправить личное сообщение для poweroff Посмотреть профиль Найти все сообщения от poweroff
 
Регистрация: 10.09.2009
Сообщений: 4

Спасибо за сылку. Переделал скрипт, но почемуто не работает.
<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 передать в функцию, но как?
Ответить с цитированием
  #4 (permalink)  
Старый 11.09.2009, 20:20
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Сообщение от poweroff
Как я понял надо переменную e передать в функцию, но как?
Браузер сам передаст в момент возникновения события, нужно просто описать ее, как 1-й аргумент функции:
…onclick=function(e)


И вы выполняете поиск элемента по идентификатору до того, как он появится в документе. Нужно отложить выполнения скрипта до окончания загрузки документа, например так:
window.onload = function() {
    document.getElementById('mybut').onclick = function(e) {
        …
    }
};


Или разместить скрипт после элемента, который используете, а не в внутри <head>

Сообщение от poweroff
<script langauge = "application/x-javascript">
Откуда вы такое взяли?

<script type="text/javascript">

Последний раз редактировалось Octane, 11.09.2009 в 20:24.
Ответить с цитированием
  #5 (permalink)  
Старый 11.09.2009, 20:40
Новичок на форуме
Отправить личное сообщение для poweroff Посмотреть профиль Найти все сообщения от poweroff
 
Регистрация: 10.09.2009
Сообщений: 4

Вроде всё поправил, но воз и ныне там. 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>
Ответить с цитированием
  #6 (permalink)  
Старый 11.09.2009, 20:48
Отправить личное сообщение для Octane Посмотреть профиль Найти все сообщения от Octane  
Регистрация: 10.07.2008
Сообщений: 3,873

Наверное, не внимательно читали статью, все что у вас внутри 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, 11.09.2009 в 20:53.
Ответить с цитированием
  #7 (permalink)  
Старый 11.09.2009, 21:59
Новичок на форуме
Отправить личное сообщение для poweroff Посмотреть профиль Найти все сообщения от poweroff
 
Регистрация: 10.09.2009
Сообщений: 4

Большое спасибо Octane.
Ответить с цитированием
  #8 (permalink)  
Старый 05.05.2013, 16:19
Новичок на форуме
Отправить личное сообщение для Vanya Посмотреть профиль Найти все сообщения от Vanya
 
Регистрация: 05.05.2013
Сообщений: 1

Сообщение от poweroff Посмотреть сообщение
Здраствуйте.
Только начинаю изучать 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 не рекомендуется уже. Вопрос, как кросбраузерно узнать координаты курсора в нутри объекта?
nu vopervix object event ponimaet tolko IE, a ostalnie neznayut,ya privedu primer kak krosbrauserno reshit etu problemu :
<!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>
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск