"internet connection show modal"
Bootstrap 3.3.0 Snippet by muhittinbudak

<link href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css"> <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script> <script src="//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> <!------ Include the above in your HEAD tag ----------> <body> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Strait"> <div class="container" style="font-family: 'Strait', sans-serif;"> <h3>İnternet Bağlantısı Kontrolü (Modal Diyalog, 3s Auto-Kapanma)</h3> <p>Bağlantı durumu değiştiğinde ortada **Bootstrap Modal** diyalog gösterir.</p> <div id="result">Durum bilinmiyor...</div> <button id="manualCheck" class="btn btn-primary btn-check">Anında Kontrol Et</button> </div> <div class="modal fade" id="internetModal" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header danger"> <button type="button" class="close" data-dismiss="modal">×</button> <h4 class="modal-title" id="modal-title">Bağlantı Kontrol Ediliyor...</h4> </div> <div class="modal-body"> <p id="modal-body-text">Bağlantı durumunuz kontrol ediliyor. Lütfen bekleyin...</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Tamam</button> </div> </div> </div> </div> <br><br> <div id="satır" class="clearfix btn-group-sm" style="width: 100%;"> <div class="pull-left " role="group"> <a href="#" class="btn btn-success tooltips" data-placement="top" data-toggle="tooltip" data-original-title="Edit"> <i class="fa fa-pencil"></i> soldaki button 1 </a> <a href="#" class="btn btn-danger tooltips" data-placement="top" data-toggle="tooltip" data-original-title="Delete"> <i class="fa fa-close"></i> soldaki button2 </a> </div> <div class="pull-right " role="group"> <a href="#" class="btn btn-warning tooltips" data-placement="top" data-toggle="tooltip" data-original-title="Delete"> <i class="fa fa-close"></i> sağdaki buton 1 </a> <a href="#" class="btn btn-info tooltips" data-placement="top" data-toggle="tooltip" data-original-title="Delete"> <i class="fa fa-close"></i> Sağdaki button 2 </a> </div> </div> </body>
body { padding: 24px; font-family: Arial, Helvetica, sans-serif; } #result { margin-top: 20px; font-size: 18px; } .btn-check { margin-top: 12px; } /* Modal Stilleri */ #internetModal .modal-header.danger { background-color: #b91c1c; /* Kırmızı başlık */ color: white; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom: none; } #internetModal .modal-header.success { background-color: #166534; /* Yeşil başlık */ color: white; border-top-left-radius: 5px; border-top-right-radius: 5px; border-bottom: none; } /* Kapatma butonu, görünür hale getirildi */ #internetModal .close { display: block; color: white; /* Kırmızı başlıkta görünmesi için */ opacity: 0.8; }
const PING_URL_BASE = "https://www.google.com/favicon.ico"; const PING_TIMEOUT_MS = 4000; const POLL_INTERVAL_MS = 3000; const AUTO_HIDE_DURATION = 3000; // 3 saniye let lastStatus = null; let pollHandle = null; let autoHideTimeout = null; /* Modal içeriğini günceller ve gösterir/gizler */ function toggleConnectionModal(online, forceShow = false) { const $modal = $("#internetModal"); const $modalTitle = $("#modal-title"); const $modalBody = $("#modal-body-text"); const $modalHeader = $modal.find('.modal-header'); const $modalFooter = $modal.find('.modal-footer'); // Önceki otomatik kapatma zamanlayıcısını temizle clearTimeout(autoHideTimeout); // Modal görünürken bağlantı geri geldiyse ve tekrar online olduysa kapat if (online && (lastStatus === false || forceShow)) { // 1. Modal İçeriği: Bağlantı Geri Geldi (Yeşil Başlık, Tamam Butonu Gizli) $modalHeader.removeClass('danger').addClass('success'); $modalTitle.html('<span class="glyphicon glyphicon-signal"></span> Bağlantı Geri Geldi!'); $modalBody.html('<p>İnternet bağlantınız başarıyla yeniden kuruldu.</p>'); $modalFooter.hide(); // Tamam butonunu gizle $modal.find('.close').hide(); // Çarpı butonunu gizle // Modalı göster $modal.modal('show'); // 3 saniye sonra otomatik kapatma zamanlayıcısını ayarla autoHideTimeout = setTimeout(() => { $modal.modal('hide'); // Footer'ı ve çarpıyı tekrar göster (bir sonraki kesinti için hazırla) $modalFooter.show(); $modal.find('.close').show(); }, AUTO_HIDE_DURATION); } else if (!online && (lastStatus === true || lastStatus === null || forceShow)) { // İnternet kesildi // 2. Modal İçeriği: Bağlantı Kesildi (Kırmızı Başlık, Tamam Butonu Görünür) $modalHeader.removeClass('success').addClass('danger'); $modalTitle.html('<span class="glyphicon glyphicon-remove-sign"></span> Bağlantı Kesildi!'); $modalBody.html('<p>İnternet bağlantınızda bir sorun var. Bağlantı geri gelene kadar lütfen bekleyin.</p>'); $modalFooter.show(); // Tamam butonunu göster $modal.find('.close').show(); // Çarpı butonunu göster // Modalı normal (kapatılabilir) şekilde göster. $modal.modal('show'); } } /* Durum yazısı */ function setResultText(text, color) { $("#result").html(text).css("color", color); } // ... (checkConnection ve pollOnce fonksiyonları önceki kodda olduğu gibi kalır) ... /* Bağlantıyı image ping yöntemiyle test et */ function checkConnection() { return new Promise((resolve) => { const url = PING_URL_BASE + "?_=" + (Math.random() * 1e9); const img = new Image(); let finished = false; const to = setTimeout(() => { if (finished) return; finished = true; cleanup(); resolve(false); }, PING_TIMEOUT_MS); function cleanup() { clearTimeout(to); img.onload = img.onerror = null; try { img.src = ""; } catch(e) {} } img.onload = function() { if (finished) return; finished = true; cleanup(); resolve(true); }; img.onerror = function() { if (finished) return; finished = true; cleanup(); resolve(false); }; img.src = url; }); } /* Bağlantı durumunu izle */ async function pollOnce() { try { const online = await checkConnection(); if (online) { setResultText("<span class='glyphicon glyphicon-ok'></span> İnternet bağlantısı mevcut.", "green"); if (lastStatus === false) { // Sadece çevrimdışından çevrimiçine geçildiğinde toggleConnectionModal(true); // Bağlantı geldi modalını göster (3s) } lastStatus = true; } else { setResultText("<span class='glyphicon glyphicon-remove'></span> İnternet bağlantısı yok!", "red"); if (lastStatus === true || lastStatus === null) { // Sadece durum değiştiğinde toggleConnectionModal(false); // Bağlantı kesildi modalını göster } lastStatus = false; } } catch (err) { setResultText("Hata: bağlantı kontrolü yapılamadı.", "gray"); lastStatus = false; } } // ... (checkConnection ve pollOnce fonksiyonları sonu) ... /* Başlat */ $(function() { pollOnce(); pollHandle = setInterval(pollOnce, POLL_INTERVAL_MS); $("#manualCheck").on("click", () => pollOnce()); // Tarayıcı offline sinyali geldiğinde modalı zorla aç (yedek olarak) window.addEventListener("offline", () => { setResultText("<span class='glyphicon glyphicon-remove'></span> Tarayıcı offline sinyali: çevrimdışı.", "red"); // toggleConnectionModal(false, true); // İsteğe bağlı, modalı zorla açabilir }); // Tarayıcı online sinyali geldiğinde bağlantıyı kontrol et window.addEventListener("online", () => { pollOnce(); }); });

Questions / Comments: