1

actionscript で getElementById に似たものはありますか?

xhtml ファイルからデータを取得するフラッシュ ページのプロトタイプを作成しようとしています。アクセス可能な html バージョン (検索エンジン、テキストリーダー、およびフラッシュを使用しない人向け) とフラッシュ バージョン (顧客が html-css-ajax ソリューションが非常にうまく機能するにもかかわらず、フラッシュを使用することを主張するため) の両方が必要です。

私が必要としているのは、HTML から特定の ID<h1 id="flashdataTitle">This is the title</h1>などのテキストまたは属性を取得する簡単な方法です。可能な方法がいくつかあると思います。

  • どういうわけか、ExternalInterface.call を使用して、JavaScript で DOM トリックを行います (より良い解決策がない限り、私は JS に非常に精通しており、flash/actionscript の完全な初心者であるため、おそらくこれを行うでしょう)。
  • Actionscript XML クラスを使用して xhtml をロードし、手動で XML を走査して正しい id 属性を探します (ただし、これはおそらく非常に低速です)。
  • actionscript の XML クラスで XPath を使用します。(これが推奨される方法である場合、これを行う方法についてのヒントが欲しいです)
  • 実際には、XML で使用する getElementById に相当する Actionscript がありますか?
  • 私の雇用主は、これを行う必要がないことを望んでいますが、サーバー側のコードを書き直して、関連するテキストと画像の 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]);
}

コード例はhereから着想を得ており、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 に答える