1

我想根据用户代理(移动,即chrome-ff)划分我的样式和脚本。如何控制和允许包含与否?

也许对于 ie 我可以使用 < !--[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

一个不错的方法是用文字扭曲它们,然后在后面的代码上打开或不打开它。我说 Literal 是因为它是少数可以在标题内运行且不留下额外代码的控件之一。

所以我这样做

 <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并在 Literal 中再次完全呈现 css 和 javascript,或者使用 Controls.Add 更难创建控件,但所有这些都比这更多的代码。

于 2012-06-29T12:17:19.160 回答
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 回答
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 回答