【发布时间】:2020-03-30 23:35:10
【问题描述】:
脚本在加载时似乎有些古怪,会导致问题。我有这个:
function fyxt_custom_scripts() {
wp_enqueue_script('jquery');
//load order is important (from website jquery, popper, bootstrap)
wp_register_script('prefix_bootstrap', '//stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js', array( 'jquery' ),'',true );
wp_enqueue_script('prefix_bootstrap');
}
add_action( 'wp_enqueue_scripts', 'fyxt_custom_scripts' );
我收到以下控制台错误:
未捕获的 TypeError:Bootstrap 的工具提示需要 Popper.js (https://popper.js.org/)
所以我在 WordPress 中添加了以下内容。
function fyxt_custom_scripts() {
wp_enqueue_script('jquery');
//popper for bootstrap
wp_register_script( 'popper','https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js', array( 'jquery' ),'',true );
wp_enqueue_script( 'popper' );
//load order is important (from website jquery, popper, bootstrap)
wp_register_script('prefix_bootstrap', '//stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js', array( 'jquery' ),'',true );
wp_enqueue_script('prefix_bootstrap');
}
add_action( 'wp_enqueue_scripts', 'fyxt_custom_scripts' );
一旦进入,它就会加载 popper。但现在我遇到了另一个错误。知道为什么吗?
tooltip.js:559 Uncaught TypeError: this.element.getAttribute is not a function
at i.t._fixTitle (tooltip.js:559)
at i.t._setListeners (tooltip.js:554)
at new i (tooltip.js:142)
at i.t._enter (tooltip.js:576)
at HTMLDocument.<anonymous> (tooltip.js:528)
at HTMLDocument.handle (jquery.js?ver=1.12.4-wp:3)
at HTMLDocument.dispatch (jquery.js?ver=1.12.4-wp:3)
at HTMLDocument.r.handle (jquery.js?ver=1.12.4-wp:3)
因此,似乎工具提示已被识别,但表示它需要 popper。但随后它会得到它并显示工具提示错误。这是怎么回事?
我尝试了几个解决方案,但没有任何效果。我认为这与加载顺序/依赖关系有关。这是完整的加载脚本。
function fyxt_custom_scripts() {
wp_enqueue_style( 'jquery-custom', plugin_dir_url( __FILE__ ) . '../css/fyxt-theme-2/jquery-ui-1.10.4.custom.css' );
wp_enqueue_style( 'jquery-custom', plugin_dir_url( __FILE__ ) . '../css/fyxt-theme-2/jquery-ui-1.10.4.custom.min.css' );
wp_enqueue_script( 'jquery' );
wp_enqueue_script( 'jquery-ui-core' );
wp_enqueue_script( 'jquery-ui-tabs' );
wp_enqueue_script( 'jquery-ui-button' );
wp_enqueue_script( 'jquery-ui-accordion' );
wp_enqueue_script( 'jquery-ui-slider' );
wp_enqueue_script( 'jquery-ui-core' );
wp_enqueue_script( 'jquery-ui-widget' );
wp_enqueue_script( 'jquery-ui-progressbar' );
wp_enqueue_script( 'jquery-ui-sortable' );
wp_enqueue_script( 'jquery-ui-autocomplete' ); //for tags, use later for generators (powers, effects, etc)
wp_enqueue_script( 'tabs-script', plugin_dir_url( __FILE__ ) . '../js/tabs.js', array('jquery-ui-core', 'jquery-ui-accordion', 'jquery-ui-tabs') );
wp_enqueue_script( 'tags-script', plugin_dir_url( __FILE__ ) . '../js/tagmanager-master/tagmanager.js', array(), '', false );
wp_enqueue_style( 'tags-custom', plugin_dir_url( __FILE__ ) . '../js/tagmanager-master/tagmanager.css' );
//plupload
wp_enqueue_script( 'plupload-full', plugin_dir_url( __FILE__ ) . '../js/plupload.full.min.js', array(), '', false );
wp_enqueue_script( 'plupload-scripts', plugin_dir_url( __FILE__ ) . '../js/jquery.ui.plupload/jquery.ui.plupload.min.js', array(), '', false );
wp_enqueue_style( 'plupload-css', plugin_dir_url( __FILE__ ) . '../js/jquery.ui.plupload/css/jquery.ui.plupload.css' );
//popper for bootstrap
wp_register_script( 'popper','https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js', array( 'jquery' ),'', false );
wp_enqueue_script( 'popper' );
//bootstrap
wp_register_style('prefix_bootstrap', '//stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css');
wp_enqueue_style('prefix_bootstrap');
//load order is important (from website jquery, popper, bootstrap)
wp_register_script('prefix_bootstrap', '//stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js', array( 'popper' ),'', false );
wp_enqueue_script('prefix_bootstrap');
}
add_action( 'wp_enqueue_scripts', 'fyxt_custom_scripts' );
如果包含“选项卡脚本”,我会收到错误消息,jquery 按钮全部损坏。制表符和手风琴工作。
tooltip.js:568 Uncaught TypeError: this.element.getAttribute is not a function
at i.t._fixTitle (tooltip.js:568)
at i.t._setListeners (tooltip.js:563)
at new i (tooltip.js:140)
at HTMLDocument.<anonymous> (tooltip.js:767)
at Function.each (jquery.js?ver=1.12.4-wp:2)
at a.fn.init.each (jquery.js?ver=1.12.4-wp:2)
at a.fn.init.i._jQueryInterface [as tooltip] (tooltip.js:758)
at HTMLDocument.<anonymous> (tabs.js?ver=ec6af3c620057499034adb106af5aae1:10)
at i (jquery.js?ver=1.12.4-wp:2)
at Object.fireWith [as resolveWith] (jquery.js?ver=1.12.4-wp:2)
at Function.ready (jquery.js?ver=1.12.4-wp:2)
at HTMLDocument.J (jquery.js?ver=1.12.4-wp:2)
如果我注释掉“选项卡脚本”,我可以让 jquery 按钮正常工作,但它会破坏选项卡和手风琴。
jquery.ui.plupload.min.js?ver=ec6af3c620057499034adb106af5aae1:1 Uncaught TypeError: i.widget is not a function
at jquery.ui.plupload.min.js?ver=ec6af3c620057499034adb106af5aae1:1
at jquery.ui.plupload.min.js?ver=ec6af3c620057499034adb106af5aae1:1
我不熟悉加载顺序和依赖关系,所以这里的建议会很棒。非常感谢您的帮助!
【问题讨论】:
-
尝试更改jQuery的版本,我的意思是删除wordpress提供的现有jquery并从CDN加载。 getbootstrap.com/docs/4.4/getting-started/download/…
-
我更新到最新了,还是没修复,还是报错。
标签: javascript jquery wordpress popper.js