質問

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

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

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

  • 何らかの方法でExternalInterface.callを使用し、JavaScriptでDOMトリックを実行します(より良い解決策がない限り、JSとflash / actionscriptの完全な初心者に非常に精通しているため、おそらく私がやることになります)
  • Actionscript XMLクラスでxhtmlをロードし、正しいid属性を探してXMLを手動で走査します(ただし、これはおそらく非常に遅いです)
  • actionscriptのXMLクラスでXPathを使用します。 (これが推奨される方法である場合、これを行う方法に関するいくつかのヒントが欲しいです)
  • 実際には、XMLで使用するgetElementByIdと同等のActionscriptがありますか?
  • 雇用主はこれを行う必要がないことを望んでいますが、サーバー側のコードを書き換えて、関連するテキストと画像のURLをフラッシュフレンドリーな形式で出力できます。

これを行う最も効果的で、実装が最も簡単で、堅牢なクロスブラウザの方法は何ですか?まったく異なるアイデアはありますか?

質問への回答が得られたと思われる場合でも、アイデアを投稿してください。さまざまな可能性をすべて検討し、提案されたソリューションの欠点を検討したいと思います。

役に立ちましたか?

解決

入力が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ライブラリがありますが、一般的なアプローチは同じです。

他のヒント

ActionScriptのprototype.js関数 inspect()のようなものはありますか? xpathソリューションをテストしてみましたが、うまくいきません。私はscpathpadを使用してxpathが正しいことをテストしました(それがその名前だと思います)。そのため、XMLオブジェクトに問題があります...デバッガーで表示するとxhtmlファイルが含まれているようです非常に混oticとしているが、もし<!> quot; inspect <!> quot;変数を追跡し、問題を特定するのに役立ちます。 (トマラックのおかげで、私の<!> quot; reputation <!> quot;が十分に高くなったらすぐにあなたの答えを支持します。)

ところで、まだ他のアイデアを聞きたいです。

IDで要素を検索するだけで十分な場合は、XML.idMap(またはActionScript 3.0ではXMLDocument.idMap)プロパティを使用します。この方法はおそらくこれを行う最も速い方法です。 XPathは高度なクエリ機能を提供しますが、パフォーマンスが低下します。したがって、id属性を持つ要素が必要な場合は、idMapを使用することをお勧めします。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top