【问题标题】:mouse click event.pagex is NaN in mobile chrome browser (v30.0.1599.92)移动 chrome 浏览器中的鼠标单击 event.pagex 为 NaN (v30.0.1599.92)
【发布时间】:2013-11-10 10:27:11
【问题描述】:

我试图在用户点击的位置显示一种信息框元素。我正在听“点击”事件,处理函数使用鼠标点击甚至对象的 event.pageX 和 event.pageY 来呈现信息框。这在桌面浏览器中完美运行。我尝试从移动客户端点击页面。 event.pageX 和 event.pageY 似乎是“NaN”。知道为什么吗??

部分处理程序如下。

var pushPinClickEventHandler = function (event) {
    var clickX = event.pageX;
    var clickY = event.pageY;
    //do some thing here
}

编辑:添加有关鼠标事件对象的详细信息

桌面:

isPrimary: true
isSecondary: false
isTouchEvent: undefined
pageX: 136
pageY: 269

手机:

isPrimary: false
isSecondary: false
isTouchEvent: true
pageX: NaN
pageY: NaN

【问题讨论】:

  • 你是如何绑定事件的?你能做一个 Jsfiddle 测试页面吗?
  • 你确定吗?不就是undefined吗?如果您尝试对 undefined 进行算术运算,例如:1 + undefined,您将得到 NaN(不是数字)。
  • 我非常怀疑,如果您在本机 event 上执行 console.log(event.pageX),您将得到 NaN - 代码比您发布的更多。
  • @Lepidosteus 我在页面中使用 bing maps ajaxv7 api。绑定如下:Microsoft.Maps.Events.addHandler(TmpPushPin, 'click', pushPinClickEventHandler);
  • @Adam isNaN(event.pageX) 评估为真。

标签: javascript jquery mobile-website bing-maps


【解决方案1】:

我找到的解决方案是用 event.originalEvent.x 和 event.originalEvent.y 覆盖 event.pageX 和 event.pageY 的值。

之后,你可以调用 event.getX(), event.getY() 来获取位置。

【讨论】:

    【解决方案2】:

    这个解决方案对我有用。我用:

    `event.changedTouches[0].pageX`  
    `event.changedTouches[0].pageY`  
    

    代替

    `event.pageX`  
    `event.pageY`
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-06
      • 2021-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-30
      相关资源
      最近更新 更多