一般的なアイデア
私の一般的な考えは、私のサイトのモバイル版とデスクトップ版を用意することです。ユーザーはページ下部のボタンでバージョンを切り替えることができます。サイトの必要なバージョンに応じてテーマを簡単に切り替えることができるように、ASP テーマを使用しています。
問題
テーマを切り替えるのは素晴らしいことですが、マスター ページJavaScript
の次のプロジェクトに既にファイルが含まれているためです。ScriptManager
<asp:ScriptManager runat="server" ID="sm">
<Scripts>
<asp:ScriptReference Path="~/Scripts/jquery-2.0.2.min.js" />
<asp:ScriptReference Path="~/Scripts/jQueryMobileBehaviour.js" />
<asp:ScriptReference Path="~/Scripts/Master.js" />
<asp:ScriptReference Path="~/Scripts/jquery.mobile-1.3.1.min.js" />
</Scripts>
</asp:ScriptManager>
jquery.mobile-1.3.1.min.js
ユーザーがデスクトップ バージョンに切り替えると、とが原因で問題が発生しjQueryMobileBehaviour.js
ます。2 つの ScriptManagers を使用する方法はありますか (ある種のテーマですが、js ファイル用)?
成功せずに試したこと
私の最初のアプローチは、モバイルJavaScript
ファイルを から削除しScriptManager
、そのようにモバイル バージョンに切り替えるボタンのクリック イベントに手動で含めることでしたsm.Scripts.Add
。
2 番目のアプローチは、JavaScript
そのようなモバイル ファイルをプログラムで削除することでしたsm.Scripts.Remove
。
protected void CommandBtn_Click(Object sender, CommandEventArgs e)
{
switch (e.CommandName)
{
case "Desktop":
HttpContext.Current.Response.Cookies["theme"].Value = "Desktop";
//sm.Scripts.Remove(new ScriptReference("~/Scripts/jquery.mobile-1.3.1.min.js"));
break;
case "Mobile":
HttpContext.Current.Response.Cookies["theme"].Value = "Mobile";
//sm.Scripts.Add(new ScriptReference("~/Scripts/jquery-2.0.2.min.js"));
//Response.Redirect(Request.RawUrl);
break;
default:
break;
}
Page.Response.Redirect(Page.Request.Url.ToString(), true);
}
どちらのアプローチもうまくいきませんでした。
質問を要約すると
- 私のコードに何か問題がありますか - パスが問題ないと仮定しますか?
JavaScript
テーマで行われるように、ファイルを切り替えることができるより良いアプローチはありますか?