仅在桌面版本的站点上加载javascript的最佳方法
Best way to have a javascript load only on desktop version of site?
我有一个JavaScript(jQuery),我正在我的WordPress网站上运行。我只希望在屏幕宽度低于 1024 像素时加载脚本。
这样做的原因是因为它与顶部导航菜单的功能有关。我只希望此脚本在屏幕宽度低于 1024 像素时加载,因为该脚本下的任何内容都将具有完全不同的菜单样式/功能。
当然,我的 CSS 文件中有很多媒体查询,这些查询以最小宽度更改设计:1024px。
我已经找到了几种方法来做到这一点,我只是想确定最好的方法是什么。
这是我当前javascript文件的副本:
function accordion_menus(){
// if we are not on mobile (menu icon is hidden) show sub items and bail
console.log('debug: start');
if ( jQuery('#primary-navigation .menu-toggle').is(':hidden') ){
console.log('debug: yes, it is hidden');
// show sub menus
$('#primary-navigation ul.nav-menu ul.sub-menu').show();
return;
} else{
// hide sub menus
$('#primary-navigation ul.nav-menu ul.sub-menu').hide();
}
// top level nav click function
$('#primary-navigation ul.nav-menu > li > a').click(function(e){
// store parent li to variable
var parent_li = $(this).parent('li');
// if sub menu does not exist in parent li
if ( !$('ul.sub-menu', parent_li).first().length ) {
return;
}
// if sub menu is already active, bail
if ( parent_li.hasClass('sub-menu-active') ){
parent_li.find('ul').slideUp(100, function(parent_li){
});
parent_li.removeClass('sub-menu-active');
return false;
}
// stop link click
e.preventDefault();
// store current sub menu in variable
var current_submenu = $('ul.sub-menu', parent_li).first();
// slide up non-current sub menus
$('#primary-navigation').find('ul.sub-menu').not(current_submenu).slideUp(function(parent_li){
// remove sub-menu-active class from all first level items except current parent li
$('#primary-navigation').find('li').not(parent_li).removeClass('sub-menu-active');
});
// slide down current sub menu
current_submenu.slideDown(100, function(){
// add sub-menu-active to current parent li
parent_li.addClass('sub-menu-active');
});
});
// second level nav click function
jQuery('#primary-navigation ul.nav-menu ul.sub-menu > li > a').click(function(e){
// store parent li to variable
var parent_li = jQuery(this).parent('li');
// if sub menu does not exist in parent li
if ( !jQuery('ul.sub-menu', parent_li).first().length ) {
return;
}
// if sub menu is already active, bail
if ( parent_li.hasClass('sub-menu-active') ){
parent_li.find('ul').slideUp(100, function(){
// remove sub-menu-active class from all first level items except current parent li
});
parent_li.removeClass('sub-menu-active');
return false;
}
// stop link click
e.preventDefault();
// store current sub menu in variable
var current_submenu = jQuery('ul.sub-menu', parent_li).first();
// slide up non-current sub menus
jQuery('#primary-navigation ul.nav-menu ul.sub-menu > li > ul.sub-menu').not(current_submenu).slideUp(function(){
// remove sub-menu-active class from all second level items except current parent li
jQuery('#primary-navigation ul.nav-menu ul.sub-menu > li').not(parent_li).removeClass('sub-menu-active');
});
// slide down current sub menu
current_submenu.slideDown(100, function(){
// add sub-menu-active to current parent li
parent_li.addClass('sub-menu-active');
});
});
}
// load menu accordion on doc ready
jQuery(document).ready(function($) {
accordion_menus();
});
// load menu accordion on window resize
jQuery(window).resize(function(){
accordion_menus();
});
jQuery(document).ready(function(){
function resizeForm(){
var width = (window.innerWidth > 0) ? window.innerWidth : document.documentElement.clientWidth;
if(width > 1024){
} else {
}
}
window.onresize = resizeForm;
resizeForm();
});
我经常使用这个。将在每次调整窗口大小时重新运行 JS。如果您不想这样,只需删除window.onresize = resizeForm;
.应该在所有浏览器中工作,因此width.innerWidth
检查。
相关文章:
- ADF:有条件地加载javascript资源
- .load()函数赢得't加载javascript
- Gmaps搜索和kmz加载javascript
- 页面显示前加载Javascript警报
- 依赖于缓慢加载javascript的UI
- 在外部JS执行后加载JavaScript
- 在WordPress站点中加载jquery.js后加载javascript代码
- 图像未加载javascript、html、angular、imdb-api
- 加载 JavaScript 取决于以前异步加载的 JavaScript
- 预加载Javascript音频以在脚本中播放
- 无法加载Javascript错误XMLHttpRequest
- AJAX JSF请求后重新加载Javascript
- Rails Assets Pipeline从控制器和方法加载JavaScript
- 使用Require.js按照依赖关系的顺序加载JavaScript
- 正在等待加载文件(加载JavaScript)
- 仅在需要时加载javascript函数
- 直接导航到chrome中的页面时未加载Javascript脚本
- 异步加载Javascript
- IE7 未加载 JavaScript 文件
- 从框架中的函数异步加载 Javascript