ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
フォーラム一覧   -   トピック一覧
   Flex Builder 3
     URL フラグメントを使用した要求データの受け渡しについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 トピック
masan
投稿日時: 2010-5-17 11:48
ご主人様
登録日: 2007-6-8
居住地:
投稿: 120
URL フラグメントを使用した要求データの受け渡しについて
masanです。

URL を使用してアプリケーションに値を渡そうとしていて、Flex3のヘルプにてサンプルを見つけました。

下記のようなソースにて作成をしています。
(サンプルと同様なつもりです)
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
historyManagementEnabled="false"
creationComplete="init(event);">

<mx:Script>
<![CDATA[
import mx.managers.IBrowserManager;
import mx.managers.BrowserManager;
import mx.utils.URLUtil;
import mx.controls.Alert;

private var bm: IBrowserManager;
[Bindable]
private var fName: String;
[Bindable]
private var lName: String;

private function init(e:Event): void {
bm = BrowserManager.getInstance();
bm.init("", "Welcome!");
Alert.show(bm.fragment);
var o: Object = URLUtil.stringToObject(bm.fragment, "&");
fName = o.firstName;
lName = o.lastName;
}
]]>
</mx:Script>

<mx:Form>
<mx:FormItem label="First name:">
<mx:Label id="ti1" text="{fName}"/>
</mx:FormItem>
<mx:FormItem label="Last Name:">
<mx:Label id="ti2" text="{lName}"/>
</mx:FormItem>
</mx:Form>
</mx:Application>

URLにhttp://localhost/xxxx/bin/t5.html#firstName=Nick;lastName=Danger
と与えていますが、データを受け渡すことができていません。
どなたか、このサンプルを試していて正しく動作することを確認している人はいらっしゃいますか?

以上、よろしくお願いいたしますj。
buibui
投稿日時: 2010-5-17 23:00
ご主人様
登録日: 2009-10-18
居住地: 中部
投稿: 168
Re: URL フラグメントを使用した要求データの受け渡しについて
こんにちは。

たしかに動かないですね。
他のサンプルが動いたのでソースを試してくださいな。


<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 
  layout="vertical" 
  historyManagementEnabled="false" 
  creationComplete="init();">
     
<mx:Script>
<![CDATA[
	import mx.controls.Alert;
/*
****** BrowserManager イベント ******

■applicationURLChange
BrowserManager の setFragment() メソッドなどを使用して、URL をプログラムで変更します
 
■browserURLChange
ユーザーが「戻る」または「進む」ボタンをクリックします
 
■urlChange 
ユーザーが URL を変更して、Enter キーを押すか「移動」をクリックします

urlChangeは、
applicationURLChange または browserURLChange イベントがトリガされたとき、常にトリガされます


****** サンプル説明 ******

DataGrid コントロールの change イベントのプロパティの例を次に示します。
ComboBox コントロールで新しい値を選択すると、applicationURLChange イベントをトリガできます。
ブラウザの「戻る」および「進む」ボタンを使用すると、browserURLChange イベントをトリガできます。
いずれの場合も、urlChange イベントもトリガします


****** 注意:ブラウザの挙動 ******

ブラウザのアドレスバーの URL フラグメントを変更すると、browserURLChange イベントがトリガされますが、
FireFox ではページのリロードはトリガされません。
Internet Explorer では、シャープ記号(#)の右側にあるアドレスの一部を変更すると、ページのリロードがトリガされます。

ディープリンクは特定のブラウザのみで機能します。
次のブラウザがディープリンクをサポートしています。

■Microsoft Internet Explorer 6 以降 
■Windows 版および Macintosh 版の FireFox 
■Macintosh 版の Safari 
上記のブラウザだけでなく、ディープリンクではクライアントブラウザでスクリプト実行を有効にする必要もあります。
ディープリンクは、単独の Flash Player や Adobe AIR では動作しません。

*/


import mx.utils.URLUtil;
import mx.managers.BrowserManager;
import mx.managers.IBrowserManager;
import mx.events.BrowserChangeEvent;

private var bm:IBrowserManager;

private function init():void
{
  bm = BrowserManager.getInstance();
  bm.addEventListener(BrowserChangeEvent.APPLICATION_URL_CHANGE, doEvent);
  bm.addEventListener(BrowserChangeEvent.BROWSER_URL_CHANGE, doEvent);
  bm.addEventListener(BrowserChangeEvent.URL_CHANGE, doEvent);
  bm.init("", "Base title");
  
  Alert.show("init fragment -------\n" + bm.fragment);
}

private function onChange():void
{
  bm.setFragment('mylabel=' + cb.selectedItem.label);
}

// 
public function doEvent(evt:BrowserChangeEvent):void
{
  eventDG.dataProvider.addItem(evt);
  trace("fragment -------\n" + bm.fragment);
  var o: Object = URLUtil.stringToObject(bm.fragment, "&");
  trace("mylabel -------\n" + o.mylabel);
}

]]>
</mx:Script>

  <mx:Array id="dp">
    <mx:Object label="one"/>
    <mx:Object label="two"/>
    <mx:Object label="three"/>
  </mx:Array>
  
  <mx:ComboBox id="cb" 
    dataProvider="{dp}" 
    change="onChange()"/>
  
  <mx:DataGrid id="eventDG" 
    dataProvider="[]" 
    width="100%" 
    variableRowHeight="true" 
    wordWrap="true" 
    height="500"/>

</mx:Application>


http://blog1.aitacos.com/?p=1426

masan
投稿日時: 2010-5-18 11:37
ご主人様
登録日: 2007-6-8
居住地:
投稿: 120
Re: URL フラグメントを使用した要求データの受け渡しについて
masanです。

buibuiさん、回答ありがとうございます。
そしてわざわざのさんプル作成ありがとうございます。

早速いただいたサンプルをカット&ペーストにてそのまま
貼り付けて作成しましたが、ソースのコメントから読んだようには動作していません。

コンボボックスの選択を変更したら、Alertが出ると思っていますが出なかったり、DataGridにも追加はされていきません。

動作を確認しているのは、IE6になります。

引き続き、アドバイスをいただけると助かります。
buibui
投稿日時: 2010-5-18 17:22
ご主人様
登録日: 2009-10-18
居住地: 中部
投稿: 168
Re: URL フラグメントを使用した要求データの受け渡しについて
こんにちは。

コンボボックスの変更はデバッグトレースになります、アラートは初期起動時のみです。
当方では問題なくアドレスも変更されDataGridにも追加されているので気になる以下を確認してみてください。

プロジェクトのプロパティでFlexコンパイラの、
ブラウザのナビゲーションとの統合を有効にするにチェックが入っていないと動かなかったので確認してみてください。

あと、ブラウザによる制限があるようなので、
一度IE8などサポート範囲が明確なもので動作確認されると問題の追及がしやすいのではないかと思います。
masan
投稿日時: 2010-5-18 22:30
ご主人様
登録日: 2007-6-8
居住地:
投稿: 120
Re: URL フラグメントを使用した要求データの受け渡しについて
masanです。

buibuiさん、回答ありがとうございます。

IE8にバージョンアップしてみましたが、状況は変わりませんでした。
また、ブラウザのナビゲーションとの統合を有効にするにもチェックが入っており、なぜ動かないのかわからない状況です。

以上、よろしくお願いいたします。
buibui
投稿日時: 2010-5-19 15:52
ご主人様
登録日: 2009-10-18
居住地: 中部
投稿: 168
Re: URL フラグメントを使用した要求データの受け渡しについて
こんにちは。

すみません、当方では問題なく動いているので何が問題かちょっと分からないです。

一応Flex SDK 3.5でやってます。
masan
投稿日時: 2010-5-20 8:38
ご主人様
登録日: 2007-6-8
居住地:
投稿: 120
Re: URL フラグメントを使用した要求データの受け渡しについて
masanです。

私は、Flex Builder 3.2を使っていますが、バージョンが違うことが原因なのでしょうか?
いろいろとありがとうございました。
別の方法にてできないかを探ってみます。

buibui
投稿日時: 2010-5-21 2:18
ご主人様
登録日: 2009-10-18
居住地: 中部
投稿: 168
Re: URL フラグメントを使用した要求データの受け渡しについて
こんにちは。

Flex BuilderのバージョンとSDKのバージョンとは違うものだと思いますが、SDKのバージョンが3.2なのでしょうか?
当方はSDKのバージョンが3.5です。
(それが問題と決め打ちは出来ませんが…)

あと、当方WinXPで確認しているので、Vistaや7では試せていません。
masan
投稿日時: 2010-5-21 12:48
ご主人様
登録日: 2007-6-8
居住地:
投稿: 120
Re: URL フラグメントを使用した要求データの受け渡しについて
masanです。

こんにちは。
コンパイラのバージョンをみると3.2になっています。
当方もXPにて動作確認をしているので、違うとしたら
SDKのバージョン違いぐらいしかないんですよね。

Flex Builder3.2でSDKが3.5というのは利用できるのかな?
buibui
投稿日時: 2010-5-21 17:29
ご主人様
登録日: 2009-10-18
居住地: 中部
投稿: 168
Re: URL フラグメントを使用した要求データの受け渡しについて
こんにちは。

SDK3.5使えますよ。
SDK3.2とSDK3.5など複数のSDKを同居させてプロジェクトごとにSDKの選択ができます。

SDKのダウンロード
http://opensource.adobe.com/wiki/display/flexsdk/Download+Flex+3

SDKの説明(Free Adobe Flex SDK と Open Source Flex SDKについて)
http://d.hatena.ne.jp/nitoyon/20080308/adobe_flex_oss_flex
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を