Tumblr 上的移动设备检测
Mobile device detection on Tumblr
我正在尝试制作一个 Tumblr 主题,如果用户正在使用 iOS(使用应用商店 link),它将显示一个 div,如果用户正在使用,则会显示一个其他任何东西(与另一个 link)。但是,由于 Tumblr 的工作方式,我不明白为什么它不起作用。我尝试使用 https://www.mattcromwell.com/detecting-mobile-devices-javascript/,它是用 Wordpress 编写的,但我不太明白我从 tumblr 中遗漏了什么。
<script type="text/javascript">
var isMobile = {
iOS: function() { return navigator.userAgent.match(/iPhone|iPad|iPod/i); },
any: function() { return (isMobile.iOS();} };
</script>
是我在 head 标签中的内容。然后,我需要在页脚中进行实际检测,我有
<p id="is-mobile" class="hide">This is a Mobile Device</p>
<p id="is-desktop" class="hide">This is NOT a Mobile Device</p>
<script type="text/javascript">
jQuery(function($) {
if (!isMobile.iOS())
$('#is-mobile').addClass('show');
if (isMobile.iOS())
$('#is-desktop').addClass('show');
});
</script>
也许我把另一个 jQuery 放错地方了?我也导入了 jQuery 库。希望有人能帮助我!当我这样做时,无论设备如何,它都不会显示任何 div(很明显,因为我将它们隐藏了 - 而且我在 css 中确实有一个不显示 .hide 类 的东西)。
有什么想法吗?
正如@Shikkediel 所指出的,iOS 函数似乎存在问题。
我做了这个fiddle。我还认为可能需要反转条件(至少现在在 fiddle 中,用于桌面的 div 显示在桌面上,而用于移动的仅在移动设备上显示)。
https://jsfiddle.net/lharby/fvau9vnz/
这是代码:
var isMobile = {
iOS: function() {
return navigator.userAgent.match(/iPhone|iPad|iPod/i)
},
any: function() {
return (isMobile.iOS())
}
};
jQuery(function($) {
if (isMobile.iOS()){ // we should only need an if/else here now. Changed from !isMobile.iOS();
$('#is-mobile').addClass('show');
}else{
$('#is-desktop').addClass('show');
}
});
Tumblr 允许自定义 CSS,不是吗?
您可以按设备屏幕大小进行操作,这样您就不必依赖用户代理(有时 spoofed and/or 可能不起作用)。
像这样 (CSS):
#is-mobile{ /* Hide it by default */
display:none;
}
@media screen and (max-width: 500px){
#is-mobile{ /* If the screen is <= 500px, display it */
display:block;
}
}
我不太熟悉 Tumblr 的工作原理,但这就是我在普通网页设计中检测移动设备的方式。
对于基于每个设备的媒体查询,check this out。
我正在尝试制作一个 Tumblr 主题,如果用户正在使用 iOS(使用应用商店 link),它将显示一个 div,如果用户正在使用,则会显示一个其他任何东西(与另一个 link)。但是,由于 Tumblr 的工作方式,我不明白为什么它不起作用。我尝试使用 https://www.mattcromwell.com/detecting-mobile-devices-javascript/,它是用 Wordpress 编写的,但我不太明白我从 tumblr 中遗漏了什么。
<script type="text/javascript">
var isMobile = {
iOS: function() { return navigator.userAgent.match(/iPhone|iPad|iPod/i); },
any: function() { return (isMobile.iOS();} };
</script>
是我在 head 标签中的内容。然后,我需要在页脚中进行实际检测,我有
<p id="is-mobile" class="hide">This is a Mobile Device</p>
<p id="is-desktop" class="hide">This is NOT a Mobile Device</p>
<script type="text/javascript">
jQuery(function($) {
if (!isMobile.iOS())
$('#is-mobile').addClass('show');
if (isMobile.iOS())
$('#is-desktop').addClass('show');
});
</script>
也许我把另一个 jQuery 放错地方了?我也导入了 jQuery 库。希望有人能帮助我!当我这样做时,无论设备如何,它都不会显示任何 div(很明显,因为我将它们隐藏了 - 而且我在 css 中确实有一个不显示 .hide 类 的东西)。
有什么想法吗?
正如@Shikkediel 所指出的,iOS 函数似乎存在问题。
我做了这个fiddle。我还认为可能需要反转条件(至少现在在 fiddle 中,用于桌面的 div 显示在桌面上,而用于移动的仅在移动设备上显示)。
https://jsfiddle.net/lharby/fvau9vnz/
这是代码:
var isMobile = {
iOS: function() {
return navigator.userAgent.match(/iPhone|iPad|iPod/i)
},
any: function() {
return (isMobile.iOS())
}
};
jQuery(function($) {
if (isMobile.iOS()){ // we should only need an if/else here now. Changed from !isMobile.iOS();
$('#is-mobile').addClass('show');
}else{
$('#is-desktop').addClass('show');
}
});
Tumblr 允许自定义 CSS,不是吗?
您可以按设备屏幕大小进行操作,这样您就不必依赖用户代理(有时 spoofed and/or 可能不起作用)。
像这样 (CSS):
#is-mobile{ /* Hide it by default */
display:none;
}
@media screen and (max-width: 500px){
#is-mobile{ /* If the screen is <= 500px, display it */
display:block;
}
}
我不太熟悉 Tumblr 的工作原理,但这就是我在普通网页设计中检测移动设备的方式。
对于基于每个设备的媒体查询,check this out。