JavaScript addEventListener "scrollIntoView" funktioniert nicht unter Chrome und Edge

Woodz

Lieutenant
Registriert
Apr. 2009
Beiträge
696
Hallo.

Hier ersteinmal was ich aktuell versuche.

HTML:
<nav class="navigation">
    <ul>
        <li><a id="navId" href="#">destination</a></li>                  
    </ul>
</nav>

Javascript:
$(document).ready(function(){
    document.querySelector('#navId').addEventListener('click', function(){
        document.querySelector('#destination').scrollIntoView({block: 'start', behavior: 'smooth'});
    });
});

Wie man sieht, versuche ich bei einem "click"-Event zu einer bestimmten "section" in meinem html-Dokument zu springen.
Das funktioniert unter Firefox auch sehr gut, aber nicht unter Chrome und Edge.
Füge ich der Anweisung ein console.log("hello world") hinzu, so wird mir dies nach dem Auslösen des click-events auch auf der Konsole angezeigt. Nur das scrollen zur gewünschten section funktioniert nicht.

Es gibt keine Warungen oder Fehlermeldungen auf der Konsole.

Beste Grüße
 
ich hab das bei mir so ähnlich gebaut:

Javascript:
        var scrollIntoViewOptions = this.options.scrollIntoViewOptions; //  this.options.scrollIntoViewOptions: { behavior:'smooth' }

        document.querySelectorAll('[rel="' + this.info.class_name + '"]').forEach(function(element){
          element.addEventListener('click', function(event){
            var target_element = null;
           
            if ( typeof this.hash !== 'undefined' ) {
              if ( this.hash !== '' ) {
                target_element = document.getElementById(this.hash.replace('#', ''));
              }
            } else if ( typeof this.dataset.href !== 'undefined' ) {
              if ( this.dataset.href !== '' && this.dataset.href.lastIndexOf('#', 0) === 0 ) {
                target_element = document.getElementById(this.dataset.href.replace('#', ''));
              }
            }
            if ( target_element !== null ) {
              target_element.scrollIntoView(scrollIntoViewOptions);
            } else {
              throw new Error('there is no element to scroll to');
            }
            event.preventDefault();
          });
        });

hier kannst du das testen: https://www.dev-themes.com/#accordeon-content-41 das geht fix im chrome
 
Ernsthaft?

Ich suche mir seit einigen Stunden nen Wolf auf stackoverflow und dann liegt es tatsächlich nur am keyword 'smooth'.
Ich danke Euch und versuche bei Sinnen zu bleiben.

Beste Grüße
 
  • Gefällt mir
Reaktionen: floq0r
Zurück
Oben