2017-01-26 32 views
0

我正在构建一个将用于所有设备的vue web应用程序。我有一些代码只能在小设备或移动设备上执行。目前,我有一个条件,如果该代码与$(window).width(),像以下:如何仅在小屏幕/移动设备上运行一些JavaScript代码

if ($(window).width() <= 768) { 
    //My mobile specific code 
} 

有一些更好的办法或这样做的VUE方式?

编辑

例如,在组件中的一个,我有:

export default { 
    data() { 
    return { 
     fade: false, 
     showFilter: $(window).width() > 768 
    } 
    }, 
    components: { PrFilter, Pr }, 
    created() { 
    if ($(window).width() <= 768) { 
     bus.$on('pr-changed',() => { 
     this.showFilter = false 
     this.fade = false 
     }) 
    } 
    } 
} 
在另一个组件

,我有:

watch: { 
    matchingPr: function (filteredPr) { 
    if (filteredPr.length) { 
     this.pr = filteredPr[0] 
     if ($(window).width() <= 768) { 
     bus.$emit('pr-changed') 
     } 
    } 
    } 
}, 
+0

你可以参考 http://stackoverflow.com/questions/11381673/detecting-a-mobile-browser –

+0

那么小的屏幕宽度和小型设备通常是相同的,但并非总是如此,你需要决定是否要代码当用户有一个小屏幕或当用户使用手机时执行。 – apokryfos

+0

@apokryfos我会更喜欢这个检查是小屏幕。 – Saurabh

回答

-1

您可以检查条件和加载JS根据需要。

<script> 
if (screen && screen.width > 480) { 
    document.write('<script type="text/javascript" src="foo.js"><\/script>'); 
} 
</script> 
+0

但是,这是vue组件特定的代码分散在不同的vue组件,不知道这可以放在一个单一的JS文件,让我在问题中添加这个。 – Saurabh

+0

你可以,如果条件添加您的js代码,然后 –

2

可以使用

function detectmob() { 
if(navigator.userAgent.match(/Android/i) 
|| navigator.userAgent.match(/webOS/i) 
|| navigator.userAgent.match(/iPhone/i) 
|| navigator.userAgent.match(/iPad/i) 
|| navigator.userAgent.match(/iPod/i) 
|| navigator.userAgent.match(/BlackBerry/i) 
|| navigator.userAgent.match(/Windows Phone/i) 
){ 
    return true; 
    } 
else { 
    return false; 
    } 
} 

navigator.userAgent的方法。

+0

你并不需要一个“别人”那里,因为第一回 – Hillcow

+0

使用的测试,而不是匹配的,那么你不需要条件函数detectMobile(){VAR ua = navigator.userAgent; return /Android/i.test (ua) || /webOS/i.test(ua) || /iPhone/i.test(ua) || /iPad/i.test(ua) || /iPod/i.test(ua) || /BlackBerry/i.test (ua) ||/Windows Phone/i.test(ua) } – Can

相关问题