Modalne, powołując się na ten sam wskaźnik

0

Pytanie

Założyłem modalne, w którym zamieściłem href link do sekcji "Kontakt", mieszczący się w końcu tego samego index.html.

Kiedy wcisnę contact me модальная przycisk znika i nie прокручиваюсь w dół do sekcji kontaktów (chyba, że jest jakaś wbudowana przewijanie po zamknięciu modalnej, która przerywa moją własną link href).

Próbowałem użyć metody javascript po naciśnięciu przycisku, ale również problemy. Podczas korzystania z window.location.reload i następnie scrollintoview Dla #kontakt strona załaduje dobrze, ale scrollintoview nigdy się nie odbędzie.

<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModalToggle">
  Launch demo modal
</button>



<div class="modal fade" id="exampleModalToggle" aria-hidden="true" aria-labelledby="exampleModalToggleLabel" tabindex="-1">
            <div class="modal-dialog modal-dialog-centered" style="width:50%;margin:auto">
              <div class="modal-content">
                <div class="modal-body">                
                  <img src="https://www.apacara.com/media/images/orange.jpg" class="d-block w-100"                                              style="width:100%;border-radius:4px;margin:auto">
                </div>
              </div>
              <div class="modal-footer" style="text-align: center;">
                  <button class="btn btn-primary" style="float:left" data-bs-target="#exampleModalToggle6" data-                             bs-toggle="modal" data-bs-dismiss="modal">Next</button>
                  <a class="btn-grad" href="#kontakt" style="cursor:pointer;font-weight:500!important" data-bs-                        toggle="modal" data-bs-dismiss="modal">Contact me</a>
                  <button class="btn btn-primary" style="float:right" data-bs-target="#exampleModalToggle2" data-                           bs-toggle="modal" data-bs-dismiss="modal">Previous</button>
              </div>
            </div>
        </div>

<div id="kontakt" style="margin-top:500px">Helo helo helo helo</div>

html hyperlink modal-dialog
2021-11-15 11:25:01
1

Najlepsza odpowiedź

1

Jest to związane z tym, jak działa detektor zdarzeń; on działa tylko jeden raz, kiedy zamyka modalne.

To, co zrobiłem, to po prostu hacking, dodając czasu, aby zamknięcie modalnego i przewijanie do przeglądania nie działa jednocześnie

const myModal = document.getElementById('exampleModalToggle');

myModal.addEventListener('hidden.bs.modal', function (event) {
setTimeout(function(){ 
   el = document.querySelector("#kontakt")
   el.scrollIntoView({behavior: 'smooth'}); 
   }, 10);
    
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModalToggle">
  Launch demo modal
</button>



<div class="modal fade" id="exampleModalToggle" aria-hidden="true" aria-labelledby="exampleModalToggleLabel" tabindex="-1">
            <div class="modal-dialog modal-dialog-centered" style="width:50%;margin:auto">
              <div class="modal-content">
                <div class="modal-body">                
                  <img src="https://www.apacara.com/media/images/orange.jpg" class="d-block w-100"                                              style="width:100%;border-radius:4px;margin:auto">
                </div>
              </div>
              <div class="modal-footer" style="text-align: center;">
                  <button class="btn btn-primary" style="float:left" data-bs-target="#exampleModalToggle6" data-                             bs-toggle="modal" data-bs-dismiss="modal">Next</button>
                  <a class="btn-grad" href="#kontakt" style="cursor:pointer;font-weight:500!important" data-bs-                        toggle="modal" data-bs-dismiss="modal">Contact me</a>
                  <button class="btn btn-primary" style="float:right" data-bs-target="#exampleModalToggle2" data-                           bs-toggle="modal" data-bs-dismiss="modal">Previous</button>
              </div>
            </div>
        </div>

<div id="kontakt" style="margin-top:500px">Helo helo helo helo</div>

2021-11-15 12:10:57

On dobrze przewijane w dół, ale ciemne tło, bez możliwości kliknięcia nadal istnieje. <div class="modal-backdrop show"></div> klasa ta pozostaje na wierzchu ciała i blokuje zawartość.
Simonsoft177

Nie mogę odtworzyć problem, można spróbować zwiększyć czas czuwania do 1000 ms i spróbować ponownie
otejiri

Myślę, że przerwa nie jest problemem, ponieważ strona nie zostanie uruchomiony ponownie. Rzecz w tym, że gdy modal otwarty, całe tło staje się nie развертываемым i przygaszone. Po zamknięciu modalne, tryb, musi wrócić możliwość przewijania i poruszania się po stronie, a ciemne tło zniknie. Jednak tak się nie dzieje, wraca tylko możliwość przewijania, ale nadal pojawia się ciemne tło i brak możliwości kliknięcia.
Simonsoft177

Czy można dodać w javascript, aby usunąć określony div nie znając jego tożsamości ? <div class="modal-backdrop show"></div> jeśli być dokładnym.
Simonsoft177

dobrze, możesz usunąć "pokazać" z listy klas
otejiri

Dziękuję, że to działa. I ostatnie, jak o tym, żeby u mnie było kilka модалов? Czy mogę po prostu skopiować i wkleić nowych słuchaczy lub umieścić wszystko w jednym?
Simonsoft177

Możesz to powtórzyć, gdy mają różne identyfikatory
otejiri

W innych językach

Ta strona jest w innych językach

Русский
..................................................................................................................
Italiano
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................