首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WordPress JS装载问题与Bootstrap和Popper

WordPress JS装载问题与Bootstrap和Popper
EN

Stack Overflow用户
提问于 2019-12-06 00:39:02
回答 3查看 1.6K关注 0票数 1

在加载导致问题的脚本时,似乎出现了一些奇怪的情况。我有这个:

代码语言:javascript
复制
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' );

我收到以下控制台错误:

Uncaught :引导的工具提示需要Popper.js (https://popper.js.org/)

因此,我在WordPress中添加了下面的内容。

代码语言:javascript
复制
    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' );

一旦它装上了弹出器。但现在我又犯了一个错误。知道为什么吗?

代码语言:javascript
复制
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)

因此,似乎工具提示是公认的,但说它需要波普尔。但是,它得到了它和工具提示错误。这里发生什么事情?

我尝试了几种解决方案,但没有效果。我认为这与加载顺序/依赖关系有关。这是完整的加载脚本。

代码语言:javascript
复制
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' );

如果包含‘tabs script’,我得到了错误,jquery按钮都坏了。制表板和手风琴很管用。

代码语言:javascript
复制
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)

如果我注释掉‘tabs script’,我会让jquery按钮正常工作,但是它会破坏选项卡和手风琴。

代码语言:javascript
复制
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

我不太熟悉加载顺序和依赖关系,所以这里的建议是很棒的。非常感谢你的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-12-13 17:22:44

似乎是PLUpload引起了这些问题。我尝试了许多不同的配置和加载顺序,它似乎总是打破了plupload。我决定不使用它,而是使用另一个类似的插件,Dropzone。PLupload已经有几年没有更新了,所以认为最好还是采用最新的/现代的风格。谢谢大家的建议和建议。

票数 0
EN

Stack Overflow用户

发布于 2019-12-06 19:12:55

我所做的是尊重引导程序提供给我的URL (https://getbootstrap.com/docs/4.4/getting-started/introduction/):

  1. https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css
  2. https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js
  3. https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js

然后,在我的函数中,我只包含了我需要的引用:

代码语言:javascript
复制
function fyxt_custom_scripts(){
    wp_register_style(('prefix_bootstrap', 'https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css', array(), '4.4.1', 'all');


    wp_register_script('popper', 'https://cdn.jsdelivr.net/npm/popper.js@1.16.0/dist/umd/popper.min.js', array( 'jquery' ),'1.16.0', true );


    wp_register_script('prefix_bootstrap', 'https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.min.js', array( 'jquery', 'popper' ),'4.4.1', true );
}
add_action( 'wp_enqueue_scripts', 'fyxt_custom_scripts' );

我遵循引导重新组合,并将脚本调用放在页脚中。在此之后,请确保在主题中分别调用<?php get_header() ?><?php get_footer() ?>标记之间的<head>...</head></body>标记之前的函数。

票数 0
EN

Stack Overflow用户

发布于 2019-12-06 06:47:36

您应该将所有JS脚本移到页脚中。希望它能帮到你。请看下面:

代码语言:javascript
复制
function fyxt_custom_scripts() {
}

add_action( 'wp_footer', 'fyxt_custom_scripts' );

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59205275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档