2017-01-26 65 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

相關問題