ActionScript中有类似getElementById的东西吗?
我正在尝试制作一个 Flash 页面的原型,它从 xhtml 文件获取数据。我想要一个可访问的 html 版本(对于搜索引擎、文本阅读器和没有 flash 的人)和一个 flash 版本(因为客户坚持使用 flash,即使 html-css-ajax 解决方案会做得很好)。
我需要的是一种从具有特定id的html中获取文本或属性的简单方法,例如
<h1 id="flashdataTitle">This is the title</h1>
等。我猜测可能有几种方法:
最有效、最容易实现且稳健的跨浏览器方法是什么?有什么完全不同的想法吗?
即使您认为问题已得到解答,也请发表任何想法,我想探索所有不同的可能性,以及所提出的解决方案有哪些缺点。
既然您说您的输入将是 XHTML,您可以使用 XPath 来完成:
import mx.xpath.XPathAPI;
var elementId:String = "flashdataTitle";
var elementPath:String = "//h1[@id'" + elementId + "']";
found_elements = XPathAPI.selectNodeList(xhtml.firstChild, elementPath);
if (found_elements.length == 1) {
trace(found_elements[0]);
}
代码示例的灵感来自于here,您还可以在其中找到有关 XPath 和 ActionScript 的一些模式详细信息。
AS3有自己的XPath库,一般方法是一样的。
Actionscript中有类似prototype.js函数inspect()的东西吗?我尝试过测试 xpath 解决方案,但它不起作用。我已经使用 scetchpad 测试了 xpath 是否正确(我认为这就是它的名字),所以我认为 XML 对象存在问题...在调试器中查看它时,它似乎包含 xhtml 文件,尽管看起来似乎相当混乱,但如果我可以“检查”变量并跟踪它们,这将有助于定位问题。 (谢谢Tomalak,一旦我的“声誉”足够高,我就会投票给你的答案。)
顺便说一句,我还想听听其他想法。
如果通过 id 查询元素就足够了,请使用 XML.idMap(或 ActionScript 3.0 中的 XMLDocument.idMap)属性。此方法可能是最快的方法。虽然 XPath 为您提供了高级查询功能,但它会降低性能。因此,如果您需要一些具有 id 属性的元素,我建议您使用 idMap。