2012-11-13 32 views
0

我正在寻找一些最佳方式来做到这一点的建议。jquery隐藏字段值在代码后面

基本上我有一些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 
    } 
+1

更好的方法是检查服务器端的用户代理并根据需要更改标记。检查:http://stackoverflow.com/questions/1005153/auto-detect-mobile-browser-via-user-agent – Chandu

+0

+1 Chandu的评论,并设置一个cookie,只有在cookie尚未设置时才运行检测脚本。 –

+0

或使用响应式设计并完全跳过移动版本。我不明白你为什么需要回发,看起来你已经找到了所有的东西。或者你可以检测并设置一个移动主题页面。后面的代码和javascript的混合是没有必要的。 – MikeSmithDev

回答

1

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

​​

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