Apache flex Flex HTMLLoader组件未为所有鼠标单击引发鼠标向下事件

Apache flex Flex HTMLLoader组件未为所有鼠标单击引发鼠标向下事件,apache-flex,actionscript-3,air,flex4,Apache Flex,Actionscript 3,Air,Flex4,我已经用Flash Builder 4构建了一个Air 2/Flex 4信息亭应用程序。目前,我正在实施一个触摸屏浏览器,使用户能够浏览公司培训视频。 为了提高触摸屏上网站的可用性,我在Doug McCune(更新为使用flex 4“Scroller”组件)的基础上添加了HTML组件,允许用户通过在屏幕上拖动手指来滚动网页。mouseDown事件用于开始滚动视口。 此外,该网页已修改为使用以下css禁用文本选择: html { -webkit-user-select: none;

我已经用Flash Builder 4构建了一个Air 2/Flex 4信息亭应用程序。目前,我正在实施一个触摸屏浏览器,使用户能够浏览公司培训视频。 为了提高触摸屏上网站的可用性,我在Doug McCune(更新为使用flex 4“Scroller”组件)的基础上添加了HTML组件,允许用户通过在屏幕上拖动手指来滚动网页。mouseDown事件用于开始滚动视口。 此外,该网页已修改为使用以下css禁用文本选择:

html {
    -webkit-user-select: none;
    cursor: default;
}
我面临的问题是,HTMLLoader组件只有在单击网页上的链接/输入/按钮时才会触发鼠标下移,而不是在单击背景或任何文本时

此外,如果我删除自定义css,mouseDown事件在选中文本时不会触发,但在单击以前突出显示的文本时会触发

作为替代方案,我还尝试添加一个与HTMLLoader具有相同维度的组容器来检测mouseDown事件(以便组容器和HTMLLoader具有相同的可拖动父容器),并且能够捕获mouseDown事件并按预期滚动视口。但是,由于鼠标事件由组容器处理,我现在无法浏览网页


有人知道为什么HTMLLoader组件没有为所有鼠标点击引发mouseDown事件吗

我也面临同样的问题,解决这个问题的一种方法是在加载网页完成时编写javascript

我是这样做的:

<mx:HTML id="html" ... >
  <mx:complete>
    var document:Object = html.htmlLoader.window.document;
    var body:Object = document.getElementsByTagName("body");
    body[0].onmousedown = function(o:Object):void
    {
      trace("mouseDown");
      ...
    }
  </mx:complete>
</mx:HTML>

var document:Object=html.htmloader.window.document;
变量body:Object=document.getElementsByTagName(“body”);
正文[0]。onmousedown=函数(o:Object):void
{
跟踪(“鼠标向下”);
...
}

我也遇到了同样的问题,解决这个问题的方法是在加载网页完成时编写javascript

我是这样做的:

<mx:HTML id="html" ... >
  <mx:complete>
    var document:Object = html.htmlLoader.window.document;
    var body:Object = document.getElementsByTagName("body");
    body[0].onmousedown = function(o:Object):void
    {
      trace("mouseDown");
      ...
    }
  </mx:complete>
</mx:HTML>

var document:Object=html.htmloader.window.document;
变量body:Object=document.getElementsByTagName(“body”);
正文[0]。onmousedown=函数(o:Object):void
{
跟踪(“鼠标向下”);
...
}

解决此问题的另一种方法是为htmlLoader的父级添加鼠标按下事件侦听器。将useCapture参数设置为true

parent.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler, true);

还有另一种解决问题的方法,只是为htmlLoader的父级添加鼠标按下事件侦听器。将useCapture参数设置为true

parent.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler, true);

我只是打了自己一巴掌,真不敢相信我竟然没有想到这个——非常好的解决方案,谢谢!我只是打了自己一巴掌,真不敢相信我竟然没有想到这个——非常好的解决方案,谢谢!