0

我正在为最好的方法寻找一些建议。

基本上我有一些 javascript 来检测用户是否在移动设备上,如果他们加载了一个 css 文件,一个移动类被添加到页面的主体,并且一个隐藏字段被赋予一个移动值。然后我检查这个隐藏字段的值,这样我就可以运行特定于移动设备的方法。

目前我的一切都按要求工作,但我被迫在第一页加载时进行 javascript 回发,以便可以从后面的代码访问隐藏字段的值。我只是想知道是否有更好的方法来做到这一点?

这是我的一些代码。

    if ( navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/iPod/i)) {
     $("body").addClass("mobile");
     $('head').append('<link rel="stylesheet" href="Styles/mobile.css" type="text/css" />');
     $('head').append('<meta name="viewport" content="width=device-width,minimum-scale=1.0,maximum-scale=1.0;">');
     if ($("#hfdevice").val() != "mobile")
     {
          $("#hfdevice").val("mobile");
          __doPostBack('hfdevice','');
     }
   }

.

HiddenField hfdevice = (HiddenField)Master.FindControl("hfdevice");
     if (hfdevice.Value == "mobile")
     {
          Do Stuff
     }
4

1 回答 1

1

如果您不想使用响应式设计,您可以像评论中提到的那样检测用户代理。后面的代码是:

   string theAgent = Request.UserAgent;
... run your check to see if mobile... change functionality, set cookie, etc.

如果需要,您也可以在 global.ascx 中执行此操作并加载不同的 MasterPage(移动母版页)。

于 2012-11-13T01:59:07.643 回答