BEHOBEN: WordPress-Site Uncaught TypeError: jQuery(…).live ist keine Funktion, die dazu führt, dass Bilder mit JS nicht angezeigt werden

Lesezeit: 7 Minuten

Benutzeravatar von Bradley Kirkland
Bradley Kirkland

Ich erstelle eine WordPress-Seite und erhalte plötzlich den Fehler:

Uncaught TypeError: jQuery(...).live is not a function
    at HTMLDocument.<anonymous> (main.js?ver=1.1:214)
    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)

Ich bin mir nicht sicher, wie ich diesen Fehler replizieren soll, da er plötzlich auftritt.

Wenn ich meine Seite besuche, werden keine Bilder geladen, die JS haben

Ich habe meine Plugins überprüft und scheine nichts Neues hinzugefügt zu sehen, wenn ich die Site in Elementor ansehe, werden alle Bilder angezeigt. Irgendwelche Ideen, wie ich das beheben kann? Nichts von dieser Seite wurde roh kodiert, nur reines WordPress

Kann jemand das Element untersuchen und mir sagen, ob/welches Plugin mir Probleme bereitet?

  • WordPress 5.5 hat aufgehört, jquerymigrate zu verwenden. Es hat Probleme mit alten Plugins und Themes verursacht. Das könnte es beheben: wordpress.org/plugins/enable-jquery-migrate-helper

    – Cully

    19. August 2020 um 6:57 Uhr

  • @Cully Danke, ist diese Änderung innerhalb des letzten Tages oder so erfolgt?

    – Bradley Kirkland

    19. August 2020 um 6:58 Uhr

  • @Cully Danke, das hat geholfen! Können Sie eine Antwort posten, damit ich eine Auswahl treffen kann, falls jemand anderes in der Community auf das gleiche Problem stößt, bitte 🙂

    – Bradley Kirkland

    19. August 2020 um 7:01 Uhr

  • Ich habe eine ausführlichere Antwort gepostet.

    – Cully

    19. August 2020 um 18:21 Uhr

Benutzeravatar von Cully
Cully

WordPress 5.5 verwendet keine jQuery-Migration mehr. Diese Änderung hat Probleme mit alten Plugins und Themes verursacht. Wenn Sie nach dem Upgrade auf WordPress 5.5 Probleme bemerken, kann die Installation dieses Plugins diese möglicherweise beheben: https://wordpress.org/plugins/enable-jquery-migrate-helper/

Letztendlich wäre es jedoch eine bessere Lösung, entweder Ihre aktuellen Plugins und Designs auf Versionen zu aktualisieren, die nicht auf jQuery-Migration angewiesen sind. Oder, wenn das nicht möglich ist, versuchen Sie, von diesen Plug-ins zu Plug-ins zu wechseln, für die keine jQuery-Migration erforderlich ist. Wenn Sie dies nicht tun, werden Sie wahrscheinlich in Zukunft auf Kompatibilitätsprobleme oder, noch schlimmer, auf Sicherheitslücken dieser veralteten Plugins/Themen stoßen.

UPDATE: 18. September 2020

Ich habe mir den Quellcode für das Plugin Enable jQuery Migrate Helper angesehen und es hat diese Bedingung für die Ausführung:

if ( version_compare( $GLOBALS['wp_version'], '5.6-alpha', '<' ) && ! class_exists( 'jQuery_Migrate_Helper' ) ) {
    include_once __DIR__ . '/class-jquery-migrate-helper.php';
    add_action( 'plugins_loaded', array( 'jQuery_Migrate_Helper', 'init_actions' ) );
}

Das Plugin funktioniert also nur bis einschließlich WordPress 5.5. Sobald WordPress die Version 5.6-alpha erreicht, funktioniert es nicht mehr.

UPDATE: 15. Februar 2021

Der Plugin-Code wurde aktualisiert, um nach WordPress 5.6 zu funktionieren. Ab Version 5.6 wird es jedoch enthalten sein jquery-migrate-3.3.2 Anstatt von jquery-migrate-1.4.1 und es enthält viel weniger Dateien (hauptsächlich jquery-ui-Skripte). Wenn Sie weiterhin die ältere Version von jquery verwenden möchten, gibt es ein paar Optionen.

Möglichkeit A. Sie könnten das Jquery-Migrations-Plugin in einen neuen Ordner kopieren (es im Grunde zu Ihrem eigenen Plugin machen), es umbenennen, die class-jquery-migrate-helper.php Datei finden Sie diese Zeile in der replace_scripts Funktion:

if ( version_compare( $GLOBALS['wp_version'], '5.6-alpha', '<' ) || 'yes' === get_option( '_jquery_migrate_downgrade_version', 'no' ) ) {

Und ersetzen Sie es durch:

if(true) {

Dadurch installiert das Plugin immer die alte Version von jquery.

Möglichkeit B. Erstellen Sie ein neues Plugin, das nur die alten jquery-Dateien enthält, indem Sie wie folgt vorgehen:

  1. Erstellen Sie ein neues Plugin.
  2. Kopieren Sie alle enable-jquery-migrate-helper/js Dateien aus dem JQuery-Migrations-Plugin in die js/ Ordner in Ihrem neuen Plugin.
  3. Fügen Sie diesen Code zu Ihrer Plugin-Datei hinzu:
add_action('wp_default_scripts', function ($scripts) {
    $setScripts = function($scripts, $handle, $src, $deps = [], $ver = false, $in_footer = false) {
        $script = $scripts->query( $handle, 'registered' );

        if ( $script ) {
            // If already added
            $script->src  = $src;
            $script->deps = $deps;
            $script->ver  = $ver;
            $script->args = $in_footer;

            unset( $script->extra['group'] );

            if ( $in_footer ) {
                $script->add_data( 'group', 1 );
            }
        } else {
            // Add the script
            if ( $in_footer ) {
                $scripts->add( $handle, $src, $deps, $ver, 1 );
            } else {
                $scripts->add( $handle, $src, $deps, $ver );
            }
        }
    };

    $assets_url = $assets_url = plugins_url( 'js/', __FILE__  );

    $setScripts( $scripts, 'jquery-migrate', $assets_url . 'jquery-migrate/jquery-migrate-1.4.1-wp.js', array(), '1.4.1-wp' );
    $setScripts( $scripts, 'jquery-core', $assets_url . 'jquery/jquery-1.12.4-wp.js', array(), '1.12.4-wp' );
    $setScripts( $scripts, 'jquery', false, array( 'jquery-core', 'jquery-migrate' ), '1.12.4-wp' );
    $setScripts( $scripts, 'jquery-ui-core', $assets_url . 'jquery-ui/core.min.js', array( 'jquery' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-core', $assets_url . 'jquery-ui/effect.min.js', array( 'jquery' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-blind', $assets_url . 'jquery-ui/effect-blind.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-bounce', $assets_url . 'jquery-ui/effect-bounce.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-clip', $assets_url . 'jquery-ui/effect-clip.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-drop', $assets_url . 'jquery-ui/effect-drop.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-explode', $assets_url . 'jquery-ui/effect-explode.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-fade', $assets_url . 'jquery-ui/effect-fade.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-fold', $assets_url . 'jquery-ui/effect-fold.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-highlight', $assets_url . 'jquery-ui/effect-highlight.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-puff', $assets_url . 'jquery-ui/effect-puff.min.js', array( 'jquery-effects-core', 'jquery-effects-scale' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-pulsate', $assets_url . 'jquery-ui/effect-pulsate.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-scale', $assets_url . 'jquery-ui/effect-scale.min.js', array( 'jquery-effects-core', 'jquery-effects-size' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-shake', $assets_url . 'jquery-ui/effect-shake.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-size', $assets_url . 'jquery-ui/effect-size.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-slide', $assets_url . 'jquery-ui/effect-slide.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-effects-transfer', $assets_url . 'jquery-ui/effect-transfer.min.js', array( 'jquery-effects-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-accordion', $assets_url . 'jquery-ui/accordion.min.js', array( 'jquery-ui-core', 'jquery-ui-widget' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-autocomplete', $assets_url . 'jquery-ui/autocomplete.min.js', array( 'jquery-ui-menu', 'wp-a11y' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-button', $assets_url . 'jquery-ui/button.min.js', array( 'jquery-ui-core', 'jquery-ui-widget' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-datepicker', $assets_url . 'jquery-ui/datepicker.min.js', array( 'jquery-ui-core' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-dialog', $assets_url . 'jquery-ui/dialog.min.js', array( 'jquery-ui-resizable', 'jquery-ui-draggable', 'jquery-ui-button', 'jquery-ui-position' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-draggable', $assets_url . 'jquery-ui/draggable.min.js', array( 'jquery-ui-mouse' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-droppable', $assets_url . 'jquery-ui/droppable.min.js', array( 'jquery-ui-draggable' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-menu', $assets_url . 'jquery-ui/menu.min.js', array( 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-mouse', $assets_url . 'jquery-ui/mouse.min.js', array( 'jquery-ui-core', 'jquery-ui-widget' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-position', $assets_url . 'jquery-ui/position.min.js', array( 'jquery' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-progressbar', $assets_url . 'jquery-ui/progressbar.min.js', array( 'jquery-ui-core', 'jquery-ui-widget' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-resizable', $assets_url . 'jquery-ui/resizable.min.js', array( 'jquery-ui-mouse' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-selectable', $assets_url . 'jquery-ui/selectable.min.js', array( 'jquery-ui-mouse' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-selectmenu', $assets_url . 'jquery-ui/selectmenu.min.js', array( 'jquery-ui-menu' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-slider', $assets_url . 'jquery-ui/slider.min.js', array( 'jquery-ui-mouse' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-sortable', $assets_url . 'jquery-ui/sortable.min.js', array( 'jquery-ui-mouse' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-spinner', $assets_url . 'jquery-ui/spinner.min.js', array( 'jquery-ui-button' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-tabs', $assets_url . 'jquery-ui/tabs.min.js', array( 'jquery-ui-core', 'jquery-ui-widget' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-tooltip', $assets_url . 'jquery-ui/tooltip.min.js', array( 'jquery-ui-core', 'jquery-ui-widget', 'jquery-ui-position' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-ui-widget', $assets_url . 'jquery-ui/widget.min.js', array( 'jquery' ), '1.11.4-wp', 1 );
    $setScripts( $scripts, 'jquery-touch-punch', false, array( 'jquery-ui-widget', 'jquery-ui-mouse' ), '0.2.2', 1 );
}, -10);

  • Danke Kumpel, ich schätze deine Hilfe

    – Bradley Kirkland

    20. August 2020 um 20:02 Uhr

  • Die Funktion hat bei mir in einem Child-Theme nicht funktioniert. Ich musste das Skript selbst in die Fußzeile einfügen:

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy