在过去的一两周里,我遇到了一个奇怪的问题,我经常会定期得到TypeError: jQuery(...).fullpage is not a function
尝试运行小脚本时出错。
这主要发生在Firefox上,虽然我在Chrome上注意到了这一点(尽管只有一到两次),但我不知道为什么会发生这种情况,因为我使用的是多年来使用的同一主题框架,我以前从未遇到过问题。
我将jQuery和我的script.js
文件(我保存所有函数的地方)正确,下面是我尝试运行的脚本的示例;
jQuery(document).ready(function ($) {
$(\'#fullpage\').fullpage({
scrollOverflow: \'true\',
sectionsColor: [\'#f2f2f2\', \'#4BBFC3\', \'#7BAABE\', \'whitesmoke\', \'#000\'],
anchors:[\'uno\', \'dos\', \'tres\', \'quatro\'],
normalScrollElementTouchThreshold: 30,
});
});
只有当我试图运行一个依赖于另一个脚本的函数时,问题才会出现,在本例中,它依赖于
full page script (也已正确排队)。
有人知道为什么会这样吗?为什么它几乎只限于Firefox?
另一件需要注意的事情是,如果你刷新页面几次,它似乎又能工作了。
编辑:这是我将脚本排队的方式;
function child_theme_js() {
if(!is_admin()) {
wp_enqueue_script(\'jquery\');
$scripts = array(
\'easing\',
\'slimscroll.min\',
\'fullpage.min\',
\'script\'
);
foreach ($scripts as $script){
wp_register_script($script, get_stylesheet_directory_uri() . \'/assets/js/\'.$script.\'.js#asyncload\', \'jquery\', \'\', true);
wp_enqueue_script($script);
}
}
}
add_action(\'wp_enqueue_scripts\', \'child_theme_js\', 30);
我之前应该提到,这是一个我有问题的儿童主题。父主题是一个非常基本的起始主题(一些函数和基本CSS)
最合适的回答,由SO网友:Eric Holmes 整理而成
虽然脚本循环非常聪明,但fullscreen
脚本未在script.js
是这就是问题所在。我会将您的排队更改为此,然后重试。
再看一眼,我相信问题是你fullpage.min
试图用作脚本的ID。我认为.
是无效字符,因此不会将脚本排队,因为它在注册时会失败。
试试这个,应该有用。还需要考虑的一件事是,您看起来正在使用异步JS加载。这意味着script.js
文件可能比它所需的资产小,首先加载,这意味着fullpage
还没有准备好。尝试不使用异步,而是在页脚中排队。
wp_register_script( \'easing\', get_stylesheet_directory_uri() . \'/assets/js/easing.js\', array(\'jquery\'), \'\', true);
wp_register_script( \'slimscroll\', get_stylesheet_directory_uri() . \'/assets/js/slimscroll.min.js\', array(\'jquery\'), \'\', true);
wp_register_script( \'fullpage\', get_stylesheet_directory_uri() . \'/assets/js/fullpage.min.js\', array(\'jquery\'), \'\', true);
wp_register_script( \'my-script\', get_stylesheet_directory_uri() . \'/assets/js/script.js\', array( \'jquery\', \'easing\', \'slimscroll\', \'fullpage\' ), \'\', true);
wp_enqueue_script( \'my-script\' );