2011-07-20 37 views
3

我在PHP頁面中嵌入了SFW。頁面上也有一個div,id="target"使用Flash AS3提取div的內容

我想訪問該div的內容(即:裏面的字符),並在AS3中將它們保存爲String變量。我怎樣才能做到這一點?

我嘗試到目前爲止

import flash.external.ExternalInterface; 
var myDivContent = ExternalInterface.call("function(){ return document.GetElementById('target');}"); 
var myDivContent2:String = myDivContent.toString(); 
test_vars.text = myDivContent2; //Dynamic text output 

回答

0

就快:

var res : String = ExternalInterface.call("function(){return document.getElementById('target').outerHTML}"); 

如果你只想要你的target的內容,請使用innerHTML代替outerHTML

1

我不認爲你可以定義在ExternalInterface.call()方法的功能。您必須通過JavaScript中已存在的名稱調用函數。

所以我想創造一些JavaScript代碼是這樣的:

function getTargetContent() 
{ 
    return document.getElementById('target').innerHTML; 
} 

然後在您的Flash,

var myDivContent = ExternalInterface.call("getTargetContent"); 

注意document.getElementById('target')只返回引用該div,不在內容。所以,如果你不返回.innerHTML那麼Flash將得到一個可能不可用的對象(儘管我沒有嘗試過這樣做)。

+0

有一些麻煩,這... –

+0

什麼樣的麻煩?請詳細說明。此外,重新檢查你的問題,我注意到你可能需要調用'test_vars.htmlText'而不是'.text';假設您從HTML頁面中提取的DIV內容實際上是HTML。另外值得警告的是'TextField'類不能顯示所有的HTML標記。 – Allan

1

最簡單的方法是像Allan所描述的那樣,編寫一個Javascript函數來坐在頁面上並向您返回所需的值。

當然,如果你不能編輯網頁內容,只閃光燈,那麼你就需要通過功能本身,這實際上將不得不被迫雖然JavaScript injection頁面。爲你的情況下,我沒有測試過一個例子:

//prepare the JavaSctipt as an XML object for Dom insertion 
var injectCode:XML = 
    <script> 
     <![CDATA[ 
      function() { 
       getElementContent = function(elementID) { 
        return document.getElementById(elementID).innerHTML; 
       } 
      } 
     ]]> 
    </script>; 

//inject code 
ExternalInterface.call(injectCode); 
//get contents of 'divA' 
var divAContent:String = ExternalInterface.call('getElementContent','divA') as String; 
//get contents of 'spanB' 
var spanBContent:String = ExternalInterface.call('getElementContent','spanB') as String;