Actionscript 3 选择HTML控件的DOM元素并将其DOM路径转发给Actionscript方法
假设我的Flex/AIR应用程序中需要一个HTML控件 用户应该能够点击当前呈现的HTML页面的某个地方,flex应用程序应该知道用户点击的DOM元素 理想情况下,应用程序将能够检索所选元素的DOM路径。将最内部的周围DIV元素回传到某个Flex/AIR方法也可以Actionscript 3 选择HTML控件的DOM元素并将其DOM路径转发给Actionscript方法,actionscript-3,apache-flex,actionscript,flash-builder,flexbuilder,Actionscript 3,Apache Flex,Actionscript,Flash Builder,Flexbuilder,假设我的Flex/AIR应用程序中需要一个HTML控件 用户应该能够点击当前呈现的HTML页面的某个地方,flex应用程序应该知道用户点击的DOM元素 理想情况下,应用程序将能够检索所选元素的DOM路径。将最内部的周围DIV元素回传到某个Flex/AIR方法也可以 Q:flex是否为这项任务提供了框架?或者您知道示例代码吗?您将回调添加到HTML元素中htmloader的窗口属性中。一个简单的例子(为了方便起见使用jQuery): 此处为HTML页面:(来源) 弹性代码: <?xml ve
Q:flex是否为这项任务提供了框架?或者您知道示例代码吗?您将回调添加到
HTML
元素中htmloader
的窗口
属性中。一个简单的例子(为了方便起见使用jQuery):
此处为HTML页面:(来源)
弹性代码:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function html1_creationCompleteHandler(event:FlexEvent):void
{
// Add the click callback
html.htmlLoader.window.flexClickCallback = function(element:Object):void
{
trace("Element ID:", element.id);
};
}
]]>
</fx:Script>
<mx:HTML id="html" location="http://fiddle.jshell.net/w23Xx/1/show/" left="10" right="10" top="10" bottom="10" creationComplete="html1_creationCompleteHandler(event)" />
</s:WindowedApplication>
我相信您可以直接添加侦听器,但这显示了如何访问页面的窗口
编辑:
Mike Chambers发布了一个直接在AIR应用程序中进行DOM操作的示例。您可以在
HTML
元素中的HTMLLoader
属性中添加一个回调。一个简单的例子(为了方便起见使用jQuery):
此处为HTML页面:(来源)
弹性代码:
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function html1_creationCompleteHandler(event:FlexEvent):void
{
// Add the click callback
html.htmlLoader.window.flexClickCallback = function(element:Object):void
{
trace("Element ID:", element.id);
};
}
]]>
</fx:Script>
<mx:HTML id="html" location="http://fiddle.jshell.net/w23Xx/1/show/" left="10" right="10" top="10" bottom="10" creationComplete="html1_creationCompleteHandler(event)" />
</s:WindowedApplication>
我相信您可以直接添加侦听器,但这显示了如何访问页面的窗口
编辑:
Mike Chambers发布了一篇关于直接在AIR应用程序中进行DOM操作的文章。为什么不使用ExternalInterface?@阿斯曼请再解释10个字!ExternalInterface是一个AS3类,允许您直接从flash应用程序调用JavaScript函数。它还可以添加回调函数,这样JavaScript就可以在应用程序中调用AS3函数。我更喜欢将JS与AS3分开,而不是AS3直接进行JS调用。它倾向于对开发人员更友好,更易于维护。_asMan是的,我也更喜欢这样。我要做的是选择HTML页面的元素。在下一次启动时,应用程序应根据先前拾取的元素定义的路径获取当前DOM内容。有点刮擦。为什么不使用外部接口?@阿斯曼请再解释10个字!ExternalInterface是一个AS3类,允许您直接从flash应用程序调用JavaScript函数。它还可以添加回调函数,这样JavaScript就可以在应用程序中调用AS3函数。我更喜欢将JS与AS3分开,而不是AS3直接进行JS调用。它倾向于对开发人员更友好,更易于维护。_asMan是的,我也更喜欢这样。我要做的是选择HTML页面的元素。在下一次启动时,应用程序应根据先前拾取的元素定义的路径获取当前DOM内容。有点刮擦。谢谢!现在是时候为递归遍历所有DOM元素添加一些逻辑,并为搜索中的每个元素附加一个处理程序。有没有关于如何将JS代码注入网页的提示?如果它不是我的?@StefanPantke:有关更多DOM操作指南,请参见上面编辑中添加的示例。@N Rohler请原谅,但这个解决方案比我提出的问题更具限制性。我需要加载一些/任何网页,然后解析单击的元素ID或XPath。以某种方式动态注入JS被Actionscript.Thx拒绝!现在是时候为递归遍历所有DOM元素添加一些逻辑,并为搜索中的每个元素附加一个处理程序。有没有关于如何将JS代码注入网页的提示?如果它不是我的?@StefanPantke:有关更多DOM操作指南,请参见上面编辑中添加的示例。@N Rohler请原谅,但这个解决方案比我提出的问题更具限制性。我需要加载一些/任何网页,然后解析单击的元素ID或XPath。Actionscript以某种方式拒绝动态注入JS。