我在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
答案 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
。