升级WordPress后,JavaScript:TypeError:XYZ不是函数

时间:2020-02-16 作者:acinis

将WordPress从4.9.13升级到5.3.2后,网站上的一些脚本以奇怪的方式停止工作。。。(例如clndr.js)。

通过添加所有脚本wp_register_scriptwp_add_inline_script WordPress的功能。

在的底部<body> 通常有三种脚本:

<script type=\'text/javascript\' src=\'http://example.com/clndr.min.js\'></script>
<script type=\'text/javascript\' src=\'http://example.com/calendar.js\'></script>
<script type=\'text/javascript\'>
    var calendar = create_calendar();
</script>
相关部分calendar.js

function create_calendar()
{
    var calendar = $(\'#Calendar\').clndr({
        // clndr options
    });

    return calendar;
}
所有脚本应按正确的顺序运行,但它们不工作,在浏览器控制台中,我出现以下错误:TypeError: $(...).clndr is not a function

此外,将呼叫更改为create_calendar 以这种方式:

window.addEventListener("load", function(){
    var calendar = create_calendar();
});
仅更改控制台中错误的顺序。

如果我对一切都理解正确,这应该就行了。。有什么想法吗?或者提示如何调试?

1 个回复
最合适的回答,由SO网友:acinis 整理而成

根据@fuxia 备注:

解决方案是在注册/排队自定义jQuery之前删除WordPress包含的jQuery(请参阅https://stackoverflow.com/a/27048128).

因此,如果您自己包含一些jQuery,那么添加

wp_dequeue_script(\'jquery\');
wp_deregister_script(\'jquery\');
在中注册/排队自定义jQuery脚本之前wp_enqueue_scripts 行动

Or 如果您希望WordPress包含jQuery,请记住,它处于无冲突模式$ 未定义。看见https://wordpress.stackexchange.com/a/2896/182809 了解更多详细信息。

相关推荐

通过unctions.php在纯javascript中安装GTM

GTM documentation 表示包含两个片段,1个在后面<head> 开始标记和1之后<body> 打开标签。最初,我是在孩子的标题中添加代码片段。php文件。我想放弃这个方法,改用纯JS,主要是因为父主题更新。我编写了下面的代码以在函数中使用。php,但它不起作用,我不知道我做错了什么。Edit : 我得到的错误是Uncaught TypeError: Cannot read property \'insertBefore\' of null 对于document.bod