1

スタイルとスクリプトをユーザー エージェント (モバイル、つまり chrome-ff) に従って分割したいのですが、含めるかどうかを制御および許可するにはどうすればよいですか?

多分私は < !--[if IE] > を使うことができますが、他の人はどうですか? 誰かが私にアドバイスしてくださいplz、thx

 <head runat="server" id="head">
    <%--Only mobile--%>
      <link href="Styles/CommonMobile.css" rel="stylesheet" type="text/css"/>
      <link href="Styles/SiteMobile.css" rel="stylesheet" type="text/css"/>
      <script src="Scripts/CommonMobile.js" type="text/javascript"></script>
      <script src="Scripts/SiteMobile.js" type="text/javascript"></script>

    <%--All but IE --%>
      <link href="Styles/GeneralView.css" rel="stylesheet" type="text/css" />
      <script src="Scripts/GeneralView.js" type="text/javascript"></script>

    <%--Only IE --%>
      <link href="Styles/IE.css" rel="stylesheet" type="text/css" />
      <script src="Scripts/IE.js" type="text/javascript"></script>


   <%--Always--%>
      <link href="Styles/Common.css" rel="stylesheet" type="text/css" />
      <script src="Scripts/Common.js" type="text/javascript"></script>
</head>
4

3 に答える 3

2

良い方法は、リテラルでそれらをワープし、それを開くか、コードビハインドで開かないことです。リテラルと言うのは、ヘッダー内で実行でき、余分なコードを残さない数少ないコントロールの 1 つだからです。

だから私はそのようにしています

 <asp:Literal runat="server" ID="OnlyIE" EnableViewState="false" Visible="false">
       <link href="Styles/IE.css" rel="stylesheet" type="text/css" />
      <script src="Scripts/IE.js" type="text/javascript"></script>
 </asp:Literal>

protected void Page_Load(object sender, EventArgs e)
{
    if (Request.Browser.Browser == "IE")
    {
        OnlyIE.Visible = true;
    }
}

[*] テスト済みで動作しています。

別の方法は、再度 を使用しRequest.Browser.Browserて CSS と JavaScript をリテラル内で完全にレンダリングすることです。または、Controls.Add を使用してコントロールを作成するのはさらに困難ですが、これらはすべてこれよりもはるかに多くのコードです。

于 2012-06-29T12:17:19.160 に答える
1

ブラウザを検出するためのより信頼性の高い方法。

var browser="";    
var isOpera = !!(window.opera && window.opera.version); // Opera 8.0+
 if(isOpera){
 string="opera"
 } 
var isFirefox = testCSS('MozBoxSizing');  // FF 0.8+
 if(isFirefox ){
 string="firefox"
 }               
var isSafari = Object.prototype.toString.call(window.HTMLElement).indexOf('Constructor') > 0;
        // At least Safari 3+: "[object HTMLElementConstructor]"
 if(isSafari ){
 string="safari"
 }
var isChrome = !isSafari && testCSS('WebkitTransform');  // Chrome 1+
 if(isChrome ){
 string="chrome"
 }
var isIE = /*@cc_on!@*/false || testCSS('msTransform');  // At least IE6
 if(isIE){
 string="IE"
 }
 if(browser==""){
 browser="mobile";
 } 

var ss = document.createElement("link");
ss.type = "text/css";
ss.rel = "stylesheet";
if(browser=="IE"){
ss.href = "Styles/"+browser+".css";
}
else{
ss.href = "Styles/GeneralView.css";
}
if(browser=="mobile"){
ss.href = ss.href = "Styles/GeneralView.css";
var ss2 = document.createElement("link");
ss2.type = "text/css";
ss2.rel = "stylesheet";
ss2.href = var ss = document.createElement("link");
ss.type = "text/css";
ss.rel = "stylesheet";
ss.href = "style.css";
document.getElementsByTagName("head")[0].appendChild(ss);
}
document.getElementsByTagName("head")[0].appendChild(ss2);

    }
Similarly with javascript files.
于 2012-06-29T12:25:41.357 に答える
1

サーバー側のコードからもjavascriptとcssを登録できます。

以下のように

string source  = "mobile" // set your source over here i.e. mobile , IE , etc

if (source == "mobile")
{

  if (!Page.ClientScript.IsClientScriptIncludeRegistered(this.GetType(), "Common"))
  {
    Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "Common", this.Page.ResolveClientUrl("~/Scripts/Common.js"));
  }
  if (!Page.ClientScript.IsClientScriptIncludeRegistered(this.GetType(), "Common"))
  {
     Page.ClientScript.RegisterClientScriptInclude(this.GetType(), "CommonCss", this.Page.ResolveClientUrl("~/Styles/Common.css"));
  }
}

これがあなたの助けになることを願っています..幸せなコーディング

于 2012-06-29T12:18:54.280 に答える