2017-05-02 7 views
0

Wenn ich eine meiner Websites Seiten besuche sagt es: class = "no-js", aber ich habe Javascript und es funktioniert wie gewünscht. Ich verwende ein Plugin "Custom Javascript" auf WordPress, anstatt die hardcoded Enqueue-Funktionen zu verwenden. Aber da es funktioniert, verstehe ich nicht, was das Problem ist. Aber heute ein anderes plugin im stopped zeigt und gab mir diesen Fehler: noscript class = "noscript-Nachricht" Nachricht: JavaScript ist für diesen Inhalt erforderlich. So klar ist etwas nicht richtig. Jeder hat eine Idee, warum? unter meinem Javascript-Code istclass = "no-js" aber Javascript funktioniert Wordpress

jQuery(document).ready(function() { 
 
     img = new Image(); 
 
\t div = document.getElementById('sidebar'); 
 
\t img.onload = function() { 
 
\t \t div.parentNode.insertBefore(img, div.nextSibling).style.marginTop = "-115px"; 
 
\t }; 
 
\t img.src = '....../.png'; 
 
    x=document.getElementsByClassName("next page-numbers"); 
 
    for(var i = 0; i < x.length; i++){ 
 
    x[i].innerText="Nästa →"; 
 
    } 
 
    y=document.getElementsByClassName("prev page-numbers"); 
 
    for(var i = 0; i < y.length; i++){ 
 
    y[i].innerText="← Tillbaka"; 
 
    } 
 

 
       jQuery("li.current_page_item").each(function(index) { 
 
        jQuery(this).parent('.sub-menu').slideToggle('fast'); 
 
        jQuery(this).parent().parent('.sub-menu').slideToggle('fast'); 
 
\t \t \t \t \t jQuery(this).parent().parent().parent('.sub-menu').slideToggle('fast'); 
 
       }); 
 

 
       jQuery("li.current-menu-parent").each(function(index) { 
 
        jQuery(this).parent('.sub-menu').slideToggle('fast'); 
 
        jQuery(this).parent().parent('.sub-menu').slideToggle('fast'); 
 
        jQuery(this).parent().parent().parent('.sub-menu').slideToggle('fast'); 
 
       }); 
 
});

Antwort

1

Was auch immer no-js Klasse zu Ihrem Körper hinzufügen, klar sollte nicht zu und das ist, was Sie in suchen.

Das Plugin, das nicht mehr funktioniert, überprüft wahrscheinlich, ob diese Klasse existiert und, da es es findet, geht es einfach: Sorry, Kumpel, ich benötige JavaScript, um richtig zu funktionieren.

Was Sie tun sollten, ist genau festzustellen, was die no-js Klasse zu Ihrem Körper hinzufügt und warum. Das ist die richtige Aktion. Es könnte sich jedoch als schwierig und zeitaufwändig erweisen.

Wenn Sie nach einer schnellen und schmutzigen Lösung sind, verwenden Sie diese:

(function($){ 
    $(document).on('ready', function(){ 
    $('body').removeClass('no-js'); 
    }) 
})(jQuery) 

Es no-js Klasse von Ihrem <body> Elemente entfernen wird, sobald DOM gebaut wird, mit jQuery (bereits in Wordpress), welches ist JavaScript. Wenn das Skript läuft, js ist funktionsfähig, so sollte die Klasse nicht auf <body>, nicht wahr? Ich führe das Skript auf document.ready, weil die meisten Skripte in WordPress an window.load gebunden sind, die nach document.ready läuft, also Chancen, dass dieses Skript vor Ihrem Plugin ausgeführt wird.


Es gibt eine Chance, dass Ihr Plugin prüft, ob oder nicht no-js auf <body> in php vorhanden ist, bevor die Seite tatsächlich gebaut wird und javascript laufen darauf. Wenn Sie die Klasse auf dieser Ebene entfernen möchten, sollten Sie fügen diese zu Ihrem Thema des functions.php:

add_filter('body_class', 'remove_nojs_from_body', 10, 1); 
function remove_nojs_from_body($classes) { 
    if (in_array('no-js', $classes)) { 
     unset($classes[array_search('no-js', $classes)]); 
    } 
    return $classes; 
} 
+0

Vielen Dank für Ihre Antwort, und ich ging hinein und überprüft. Weil niemand schnelle Korrekturen mag, muss es nur richtig funktionieren. Also habe ich eingecheckt: MuppetShovel

Verwandte Themen