apache-flex Flex鼠标事件在警报上不起作用

nc1teljy  于 2022-11-01  发布在  Apache
关注(0)|答案(1)|浏览(153)

我们有三个弹出窗口

  1. Poppup1左侧显示电子邮件列表,右侧显示电子邮件内容。VBOX内此弹出窗口底部有一个分隔框,其中有一个显示电子邮件列表的数据网格和一个显示电子邮件内容的文本区域。
    1.当用户单击Popup1上的“重新发送”按钮时,将显示Popup2,其中包含电子邮件内容、发件人和收件人等,并在底部显示“发送”按钮
    1.当用户点击弹出窗口2上的发送时,会显示一个提示,要求用户确认,选项为是或否。现在,鼠标事件在此提示上不起作用,但键盘事件起作用。
    下面是Popup1上的两种方法导致的问题。在这些方法中,如果ExternalInterface.call被注解,鼠标事件将在警报上工作。有什么办法解决这个问题吗?
private function onCreationComplete( event:Event ):void
{
     positionHandler(event);
     changeHandler(event);
     this.addEventListener(ResizeEvent.RESIZE, positionHandler);                   
     this.addEventListener(MoveEvent.MOVE, positionHandler);                       
     this.parent.addEventListener(ResizeEvent.RESIZE, positionHandler);                   
     txtMsgDesc.addEventListener(MoveEvent.MOVE, positionHandler);
}

private function positionHandler(event:Event):void 
{
     var position:Point = new Point(txtMsgDesc.x + this.borderMetrics.left + 10, txtMsgDesc.y + this.borderMetrics.top);
     position = this.localToGlobal(position);
     position = Application.application.globalToLocal(position);
     var width:int = txtMsgDesc.width;
     var height:int = txtMsgDesc.height;

     ExternalInterface.call("moveHtml", position.y, position.x, width-5, height-5);   
}

外部接口调用javascript来设置宽度、高度等。无法计算,此函数存在问题。

function moveHtml(top, left, width, height)
{
    htmlTextArea.style.top = parseFloat(top);
    htmlTextArea.style.left = parseFloat (left);
    htmlTextArea.style.width = parseFloat (width);
    htmlTextArea.style.height = parseFloat (height); 
}

更新

在javascript函数中,如果我硬编码值,它的工作原理如下所示。我怀疑parseFloat存在一些问题,并尝试检查值是否不是isNaN,但仍然不工作:(

function moveHtml(top, left, width, height)
{
    htmlTextArea.style.top = 200;
    htmlTextArea.style.left = 300;
    htmlTextArea.style.width = 100;
    htmlTextArea.style.height = 200; 
}
vsaztqbk

vsaztqbk1#

最后我解决了这个问题。这是html div重叠flex文本区域阻止了警报窗口上的鼠标交互。
我们有一个加载swf文件的JSP页面,此JSP包含一个div。在Flex屏幕上,对于某些电子邮件类型,电子邮件内容显示在flex文本区域中;对于其他类型,flex文本区域是隐藏的,并将内容设置为div(使用div.innerHTML)。
当警报在html div上打开时,鼠标事件在警报上不起作用。作为一个解决办法,我将警报移到左边,这样它就不会出现在html文本区域的顶部,从而解决了这个问题。

相关问题