- PR -

デバイスによる出力内容の振り分け

1
投稿者投稿内容
いのつち
ベテラン
会議室デビュー日: 2002/05/14
投稿数: 73
投稿日時: 2002-11-11 16:22
MMIT DeviceUpdate2.0で試しています。

リンクにキー入力で対応させるため
i-modeでは、 Accesskey="1"
JPhoneでは、 DirectKey="1" をリンクに加えたいと考えています。

SDKを見ながら
<mobile:Link ID="linkAnn" Runat=server NavigateUrl="./ann/ann.aspx">リンク
<DeviceSpecific>
 <Choice Filter="isCHTML10" Argument="true" AccessKey="1"></Choice>
 <Choice Filter="isJPhone" Argument="true" DIRECTKEY="1"></Choice>
</DeviceSpecific>
</mobile:Link>
として、
web.config には、
<mobileControls allowCustomAttributes="true" />
を加えました。
あと、web.config には、filter も定義しています。VS.NETで自動生成されたもの

<filter name="isJPhone" compare="Type" argument="J-Phone" />
<filter name="isCHTML10" compare="PreferredRenderingType" argument="chtml10" />
がかかれています。

しかし、生成されるコードは、
J-Phoneでもi-modeでも
<a href="..............">リンク</a>
だけで、DirectKey や AccessKeyの属性が追加されません。

どのようにすれば、属性を追加できるのでしょうか。。

下記のコードの場合はうまくいったのですが。。
<mobile:Label id="lblMember" Runat="server" Text="会員番号">
<DeviceSpecific>
<Choice Filter="isJPhone" Argument="true" Text="@会員番号"></Choice>
<Choice Filter="isCHTML10" Argument="true" Text="@会員番号"></Choice>
</DeviceSpecific>
</mobile:Label>

@マーク部分には、デバイス固有の絵文字コードで絵文字を出し分ける。
Textという既知のプロパティだからでしょうか。


いのつち
ベテラン
会議室デビュー日: 2002/05/14
投稿数: 73
投稿日時: 2002-11-11 21:11

自己レスです。解決できました。
1日中この調査にとられてしまいました。
解決方法を書いておきます。

先の状態で再度テストしたところ、i-modeでは、AccessKey属性がつけられていました。
しかし、Jphoneでは、DirectKeyがつきません。

さらにSDKを見回してみると、アダプタのソースコードを修正するところに行き当たりました。
c:\Program Files\Microsoft Mobile Internet Toolkit\Adapter Source
の中のソースコードから、
HtmlControlAdapter.cs 内に下記のようなコードが見つかり、
どうやら、AccessKeyは認識して属性を加えるが、DirectKeyは付けてくれないようです。

// Can be used by adapter that allow its subclass to add more
// specific attributes
protected virtual void AddAttributes(HtmlMobileTextWriter writer)
{
}

// Can be used by adapter that adds the custom attribute "accesskey"
protected virtual void AddAccesskeyAttribute(HtmlMobileTextWriter writer)
{
if (Device.SupportsAccesskeyAttribute)
{
AddCustomAttribute(writer, "accesskey");
}
}
// 2002/11/11 J-Phone DirectKey 属性追加
    //ここを追加
protected void AddDirectKeyAttribute(HtmlMobileTextWriter writer)
{
if (Device.Type=="J-Phone")
{
AddCustomAttribute(writer, "directkey");
}
}
さらに、cHtmlLinkAdapter.cs を修正


protected override void AddAttributes(HtmlMobileTextWriter writer)
{
// 2002/11/11 J-Phone DirectKey 属性追加
 AddDirectKeyAttribute(writer);

     AddAccesskeyAttribute(writer);
AddJPhoneMultiMediaAttributes(writer);
}



SDKのMobile Internet ToolKit
ドキュメント
  拡張性に関する開発者用ガイド
   新しいデバイスアダプタおよびデバイスサポートの追加
    ウォークスルー:デバイスのサポートの追加

の手順どおり、ソースをコンパイル
web.Config にソースと同じところにあるweb.config-shippedAdaptersファイルの
内容をコピー
コンパイルしたDLLをVS.NETでモバイルWebアプリケーションに参照設定で、
無事 DirectKeyをつけてくれるようになりました。




1

スキルアップ/キャリアアップ(JOB@IT)