2011-10-13 97 views
1

想,我需要有我的Flex/AIR應用程序內HTML控件選擇DOM元素並轉發其DOM路徑爲ActionScript方法

用戶應該能夠點擊進入某處的目前呈現的HTML頁面和Flex應用程序應該知道,這DOM元素,用戶點擊

理想情況下,應用程序將能夠檢索所選元素的DOM路徑。回發最內DIV-元件周圍一定的Flex/AIR的方法將是沒關係。

問:是否彎曲提供此任務的框架的東西嗎?或者你知道示例代碼?

+0

爲什麼不使用ExternalInterface的? –

+0

@The_asMan請多說10個字! – SteAp

+0

ExternalInterface的是一個AS3類,允許您直接從您的Flash應用程序調用JavaScript函數。它還可以添加回調函數,以便JavaScript可以在您的應用程序中調用AS3函數。 –

回答

1

您在HTML元素內添加了對HTMLLoaderwindow屬性的回調。一個簡單的例子(使用jQuery的權宜之計):

HTML頁面在這裏:http://fiddle.jshell.net/w23Xx/1/show/(來源here

Flex代碼:

<?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> 

我相信你可以直接添加監聽器,但是這顯示瞭如何訪問頁面的window

編輯:

邁克·錢伯斯內發佈AIR應用程序的直接做DOM操作的example

+0

Thx!現在是時候添加一些邏輯來遞歸遍歷所有的DOM元素,並將一個處理程序附加到搜索中的每個元素。任何提示如何將JS代碼注入到網頁中?如果它不是我的? – SteAp

+0

@StefanPantke:查看上面編輯中添加的示例以獲取更多DOM操作指導。 –

+0

@N Rohler謝謝!跳到Mike的帖子... – SteAp