使用Flash AS3提取div的内容

时间:2011-07-20 21:22:23

标签: html flash actionscript-3

我在PHP页面中嵌入了SFW。页面上还有一个带id="target"的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

3 个答案:

答案 0 :(得分:1)

我认为你不能在ExternalInterface.call()方法中定义一个函数。您必须按名称调用函数,该函数已存在于JavaScript中。

所以我创建了一些像这样的JavaScript代码:

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

然后在你的Flash中,

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

请注意,document.getElementById('target')仅返回对该div的引用,而不是其中的内容。因此,如果您不返回.innerHTML,那么Flash将获得一个可能无法使用的对象(尽管我实际上没有尝试过这样做)。

答案 1 :(得分:1)

最简单的方法就是Allan描述的,编写一个Javascript函数来放在页面上并返回所需的值。

当然,如果你不能编辑页面内容,只有flash,那么你确实需要传递函数本身,实际上必须强制进入页面{{ 3}}。您的案例的一个例子,我没有测试过:

//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;

答案 2 :(得分:0)

你快到了:

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

如果您只想要target的内容,请使用innerHTML代替outerHTML