【问题标题】:Extract the contents of a div using Flash AS3使用 Flash AS3 提取 div 的内容
【发布时间】:2011-07-20 21:22:23
【问题描述】:

我在 PHP 页面中嵌入了一个 SFW。页面上还有一个div,id="target"

我想访问该 div 的内容(即:其中的字符)并将它们作为String 变量保存在 AS3 中。我该怎么做?

我目前的尝试

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

【问题讨论】:

    标签: html flash actionscript-3


    【解决方案1】:

    我认为您不能在 ExternalInterface.call() 方法中定义函数。您必须按名称调用 JavaScript 中已经存在的函数。

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

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

    然后在你的 Flash 中,

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

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

    【讨论】:

    • 什么麻烦?请详细说明。另外,重新检查您的问题,我注意到您可能需要致电test_vars.htmlText 而不仅仅是.text;假设您从 HTML 页面中提取的 DIV 内容实际上是 HTML。另请注意,TextField 类无法显示所有 HTML 标记。
    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

      你快到了:

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

      如果您只想要target 的内容,请使用innerHTML 而不是outerHTML

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-15
        • 1970-01-01
        • 1970-01-01
        • 2011-04-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多