2015-08-07 2 views
1

Мне нужно, чтобы этот скрипт работал на размерах экрана шириной 794 пикселей или выше. Для меньших размеров экрана он не должен запускаться, потому что это создает проблемы с другим скриптом.Javascript на разных размерах экрана

Я пробовал разные вещи, но я действительно не знаю, как это сделать.

jQuery(document).ready(function ($) { 
    $('a[href*=#]:not([href=#])').click(function() { 
     if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { 
      var target = $(this.hash); 
      target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); 
      if (target.length) { 
       $('html,body').animate({ 
        scrollTop: target.offset().top 
       }, 1000); 
       return false; 
      } 
     } 
    }); 
}); 

Может кто-нибудь, дайте мне знать, как я могу изменить это, чтобы этот скрипт работает на ширине экрана 794 пикс или выше?

С наилучшими пожеланиями şafak

ответ

2

Вы можете использовать window.matchMedia() для запросов СМИ в JavaScript.

, например

var mq = window.matchMedia("(max-width: 570px)"); 
if (mq.matches) { 
    // window width is at less than 570px 
} 
else { 
    // window width is greater than 570px 
} 

Для поддержки веб-браузера: Пожалуйста, обратитесь "https://hacks.mozilla.org/2012/06/using-window-matchmedia-to-do-media-queries-in-javascript/"

Update

Если вы хотите запустить скрипт только один раз, а не на изменение размера вы можете использовать

if($(window).width()>=794) 
{ 
    //do your stuffs here 
} 
+1

Хорошее решение. Но помните, что это работает только в IE 10 и выше, а не на IE mobile. Вот хороший полипол для поддержки большего числа браузеров: https://github.com/paulirish/matchMedia.js/ – Timmetje

+0

Спасибо. Но есть одна проблема. Когда я открываю эту страницу шириной 1024 px и меняю размер окна без перезагрузки, мой скрипт все еще запущен. :/ – Kish

+0

Да, это будет потому, что вы изменяете размер окна. Вы хотите запустить сценарий только один раз, а не на размер? –

0

С JQuery:

$(function(){ 
    $(window).resize(function(){ 
     if($(window).width() >= 794){ 
      // Your code here 
     } 
    }); 
    $(window).resize(); // Trigger window resize to check on load 
}); 
0

Вы можете использовать window.width()

например:

if(!$(window).width()<794) 
{ 
    //do your stuffs here 
} 
0

Беспоставочной решение JQuery будет выглядеть как этот

if (window.innerWidth > 794) { 
    myFunc(); //the code that you want to run on bigger screens 
} 
0
jQuery(document).ready(function ($) { 
$('a[href*=#]:not([href=#])').click(function() { 
    if($(window).width() >= 794) 
    { 
    if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) { 
     var target = $(this.hash); 
     target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); 
     if (target.length) { 
      $('html,body').animate({ 
       scrollTop: target.offset().top 
      }, 1000); 
      return false; 
     } 
    } 
    }//window size check ends here 
}); 

});

+0

Это также работает, когда посетитель меняет размер окна?Так что, если они загружают страницу шириной 1024, то измените ее размер до менее чем 794, сценарий перестанет работать? – Kish

+0

Да, это должно сработать. Поскольку этот код всегда проверяет текущую ширину экрана при каждом событии клика, вызывая $ (window) .width() в условии if –

Смежные вопросы