代码之家  ›  专栏  ›  技术社区  ›  Anthony Atmaram

event.clientx是只读的?

  •  0
  • Anthony Atmaram  · 技术社区  · 14 年前

    主要在IE8中工作,但是尝试为现代浏览器编写一个可移植的解决方案。使用Telerik控件。

    我正在捕获radContextMenu的“显示”客户端事件,并尝试调整它的坐标。无法为dom事件的clientx、clienty和x、y成员分配新值。Visual Studio出现“htmlfile:member not found”错误。

    我的目标是让一个radcontextmenu在用户点击时显示在radeditor中(在某些情况下,这是管理层的要求)。所以我捕获了radeditor内容区域的onclick事件( radEditor.get_document().body; )然后我打电话 show(evt) 在上下文菜单上,其中“evt”是与click事件对应的事件对象。

    因为radeditor的内容在iframe中,所以必须在上下文菜单显示之前调整click事件的位置。这是在“显示”事件中完成的。但是,我不能给members.clientx和friends赋值。就好像javascript暂时忘记了integer+和+=操作符。

    这些成员是否可能在某个时刻变为readonly/const?

    var evt = args.get_domEvent();
    
    while (node) {
        evt.clientX += node.offsetLeft; //'Member not found' here.
        evt.clientY += node.offsetTop;
        node = node.offsetParent;
    }
    
    evt.clientY += sender.get_element().clientHeight;
    
    1 回复  |  直到 14 年前
        1
  •  0
  •   Anthony Atmaram    14 年前

    好吧,我找到了解决办法 here . 在将事件传递给contextmenu.show()函数之前,我制作了一个副本并传递它。这很有魅力!