我使用jQuery Mobile UI构建了我的移动网站,但我现在意识到我需要一些功能在它和我的桌面网站之间有所不同(桌面网站上的datepicker日期应该更长,等等)。
我已经调查了Modernizr和matchMedia以帮助我加载单独的js文件,但我无法找到一种很好的方式来响应它。 Modernizr只能在初始加载时工作(除非我在文档中遗漏了一些内容)并且我遇到了matchMedia在超过最小/最大宽度阈值时执行多次的问题。它有时工作,但麻烦在于添加/删除单独的js文件。除此之外(但不是一个很大的问题 - 我不认为),当从另一个脚本将脚本加载到DOM时,Chrome会触发错误。
最好的办法是编写一个js文件,然后在主体宽度上添加$.mobile.media("screen and (min-width: XXXpx)")
等侦听器,更改我需要的值吗?
我可能会为自己做得太难,或者因为我试图保持HTTP请求和网站大小尽可能小而忽略了一些明显的东西,但我无法找到一个很好的解决方案。
谢谢!
Lightning Round Bonus问题:在切换到之后保持所有jQuery Mobile样式(data-role
data-id
data-theme
)是否良好的做法/适当桌面网站?对于只在更大的屏幕上观看它的人来说,它看起来非常糟糕。
答案 0 :(得分:1)
恕我直言,最好的方法是在你的javascript中引入几个标志,比如“isMobile”,“isTablet”或“isDesktop”,这些标志将在你webapp的“pageinit”事件附带的方法中设置。稍后,您可以检查标志,以便在代码的特定部分中使用正确的版本进行相应操作。
检查标志的方式取决于您的架构。在我正在工作的项目中,我从页面正文后端附加的类中提取该信息,但这是因为我们有这些信息。您可以尝试使用像Harvey这样的库来观察将触发的媒体查询,并相应地设置标志。我认为你的选择不会在这里结束,但我恐怕无法帮助你了!