1

actionscript 中有什么类似于 getElementById 的吗?

我正在尝试制作一个从 xhtml 文件中获取数据的 Flash 页面的原型。我想要一个可访问的 html 版本(用于搜索引擎、文本阅读器和没有 flash 的人)和一个 flash 版本(因为客户坚持使用 flash,即使 html-css-ajax 解决方案会做得很好)。

我需要的是一种从具有特定 id 的 html 中获取文本或属性的简单方法,例如<h1 id="flashdataTitle">This is the title</h1>等。我猜测有几种方法可能是可行的:

  • 以某种方式使用 ExternalInterface.call 并在 JavaScript 中进行 DOM 技巧(这可能是我将要做的,因为我非常熟悉 JS 和一个完整的 flash/actionscript 新手,除非你有更好的解决方案)
  • 使用 Actionscript XML 类加载 xhtml,并手动遍历 XML 寻找正确的 id 属性(但这可能很慢)
  • 将 XPath 与 actionscript 中的 XML 类一起使用。(如果这是推荐的方式,我想要一些关于如何做到这一点的提示)
  • 实际上有一个等效于 getElementById 的 Actionscript 与 XML 一起使用?
  • 尽管我的雇主希望我们不必这样做:我可以重写服务器端代码,以对 Flash 友好的格式输出相关的文本和图像 url。

什么是最有效、最容易实现和健壮的跨浏览器的方法?有什么完全不同的想法吗?

即使您认为问题已得到解答,也请发表任何想法,我想探索所有不同的可能性,以及所提出的解决方案有哪些缺点。

4

3 回答 3

1

既然你说你的输入是 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]);
}

代码示例的灵感来自此处,您还可以在此处找到有关 XPath 和 ActionScript 的一些模式详细信息。

AS3 有它自己的XPath Library,一般方法是一样的。

于 2008-11-12T10:38:28.433 回答
0

Actionscript 中是否有类似prototype.js 函数inspect()的东西?我试过测试 xpath 解决方案,但它不起作用。我已经使用 scetchpad 测试了 xpath 是正确的(我认为这就是它的名称),所以我相信 XML 对象存在问题......在调试器中查看它时似乎包含 xhtml 文件,虽然看起来相当混乱,但如果我可以“检查”变量并跟踪它们,它将有助于定位问题。(谢谢 Tomalak,只要我的“声誉”足够高,我就会支持你的回答。)

顺便说一句,我还是想听听其他的想法。

于 2008-11-12T20:41:43.617 回答
0

如果按 id 查询元素就足够了,请使用 XML.idMap(或 ActionScript 3.0 中的 XMLDocument.idMap)属性。这种方法可能是最快的方法。虽然 XPath 为您提供高级查询功能,但它会降低性能。因此,如果您需要一些具有 id 属性的元素,我建议您使用 idMap。

于 2008-11-25T11:15:36.663 回答