- - PR -
デバイスによる出力内容の振り分け
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 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-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
