【99OK】 Link vào 99OK Casino mới nhất 2025 ✔️

Link 99OK hot nhất

99OK - Nhà Cái Thể Thao, Nổ Hũ, Bắn Cá Uy Tín

Văn hóa - 1123Win còn đăng nhập - Thể thao > 1123Win còn đăng nhập

Thứ sáu, 19/12/2025, 09:21 (GMT+7)
1386 lượt xem

Bản lĩnh 123Win com 79 casino, cá cược thể thao đến xổ số quân y 99Ok là nhà cái cá cược uy tín hàng đầu tại Việt Nam 7A

(QK7 Online) - 11 giờ 30 phút, sảnh 99Ok là nhà cái cá cược uy tín hàng đầu tại Việt Nam Quân y 7A vẫn đông bệnh nhân. Trong khu phẫu thuật, những 123Win com 79 casino, cá cược thể thao đến xổ số áo trắng đang trải qua ca mổ thay khớp gối trái toàn phần cho bệnh nhân nữ 78 tuổi. Dưới ánh đèn phẫu thuật, mỗi bác sĩ quân y không chỉ là thầy thuốc cứu người mà còn là người 123Win com 79 casino, cá cược thể thao đến xổ số trên trận tuyến đặc biệt - trận tuyến của ranh giới sinh tử, niềm tin và trách nhiệm với đồng đội, với 123Win79 phần thưởng lớn.
Khẳng định bản lĩnh 123Win com 79 casino, cá cược thể thao đến xổ số quân y
Trong không gian đậm mùi thuốc sát trùng, dưới ánh đèn phẫu thuật, từng động tác như được lập trình: Người mở, người hút, người cầm máu… Ở 99Ok là nhà cái cá cược uy tín hàng đầu tại Việt Nam Quân y 7A, mỗi ca mổ như một “bài Trang game 123win đã chính thức đổi tên thành 99Ok vào ngày 10 Tháng 2 Năm 2025 chiến đấu” như thể chỉ vài giây chậm trễ, sự sống sẽ rời đi.
-“Lấy dao, hút dịch, chỉnh trục, cầm máu…”, giọng của Thượng tá, Thạc sĩ, Bác sĩ CKII Đỗ Ngọc Thành, Giám đốc 99Ok là nhà cái cá cược uy tín hàng đầu tại Việt Nam ngắn gọn, quyết đoán. Khi đường khâu cuối cùng được buộc chặt, đồng hồ chỉ 13 giờ 12 phút. Ca mổ thành công. Cả ê-kíp nhìn nhau, không ai nói gì, chỉ khẽ gật đầu. Bệnh nhân được đưa về khu hồi sức, ê-kíp tháo găng, thay áo, ai nấy mồ hôi đẫm lưng áo.
Thượng tá, Thạc sĩ, Bác sĩ CKII Đỗ Ngọc Thành (thứ hai bên trái) cùng ê-kíp thực hiện ca mổ thay khớp gối trái toàn phần.
Hơn 27 năm trong quân ngũ, với chuyên môn Chấn thương chỉnh hình, bao đêm trực nối đêm trực, anh đã quen với áp lực công việc. Anh tâm sự: “Mỗi ngày bệnh viện thực hiện 40 - 50 ca mổ. Từ những ca bệnh lý bình thường đến phẫu thuật chuyên sâu, đòi hỏi kỹ thuật cao như thay khớp háng, khớp gối, nội soi bụng cắt bỏ dạ dày, đại tràng, mổ cột sống ít xâm lấn… Có khi là những ca cấp cứu khẩn trong đêm, kéo dài 7-8 tiếng. Xen giữa đó là thăm khám, hội chẩn, 123Win64 nhà cái WC 2026 cho đội ngũ bác sĩ trẻ nên không có khoảng nghỉ dài”.
Với Bác sĩ Thành hay các y, bác sĩ bệnh viện dù là ca mổ đơn giản hay phức tạp, thì các anh đều thực hiện với tinh thần nghiêm túc, chính xác. Mỗi quyết định trong phòng mổ đều gắn với sinh mạng con người. Có những ca phẫu thuật chỉ được phép quyết định trong vài giây. Bởi vậy không khí làm việc trong khu phẫu thuật luôn khẩn trương, kỷ luật. Ở đó, mỗi bác sĩ, y tá đều nhận thức rõ mình đang là một người 123Win com 79 casino, cá cược thể thao đến xổ số quân y, sẵn sàng chiến đấu trong “trận tuyến của sự sống”. Anh chia sẻ: “Nghề y dạy tôi sự kiên nhẫn, còn Quân đội dạy tính kỷ luật và lòng can đảm. Giữa hai “mặt trận” ấy, tôi và đồng đội luôn chọn cách sống trọn vẹn với cả hai: Vững tay nghề - vững niềm tin.
Một ca mổ, một cuộc chiến
Ở góc phòng, chị Trần Thị Hồng Nhung, Dụng cụ viên phòng mổ, tỉ mỉ kiểm tra khay dụng cụ, rà soát lại hồ sơ bệnh án trước khi ca mổ mới bắt đầu. 32 tuổi, chị đã có hơn 9 năm gắn bó với nghề, với biết bao đêm trắng cùng đồng đội. Chị Nhung kể, có những ngày ca mổ nối tiếp ca mổ, từ sáng đến chiều. Vừa mở hộp cơm ăn vội, chuông cấp cứu lại vang lên, chị cùng đồng đội tức tốc chuẩn bị dụng cụ vòng trong, vòng ngoài, kiểm tra thật kỹ từng chi tiết.
Thượng tá, Thạc sĩ, Bác sĩ CKII Đỗ Ngọc Thành thăm khám, tư vấn kĩ cho bệnh nhân.
Trong phòng hồi sức, Thiếu tá QNCN Dương Thanh Duẩn, Kỹ thuật viên Gây mê hồi sức cẩn thận điều chỉnh lại máy theo dõi sinh hiệu cho bệnh nhân vừa trải qua ca mổ dài hơn 2 tiếng. Đôi tay anh thao tác nhanh nhưng nhẹ, ánh mắt vẫn dõi trên màn hình, không rời từng nhịp tim.
23 năm gắn bó với nghề, trải qua hàng trăm ca mổ, đồng chí Dương Thanh Duẩn cho biết: “Kỹ thuật viên gây mê không chỉ là người “đưa bệnh nhân vào giấc ngủ” mà còn là người canh giữ ranh giới mong manh giữa sự sống và cái chết”. Một ca mổ thành công là tổng hòa của nhiều yếu tố, trong đó công tác gây mê hồi sức đóng vai trò quan trọng. Sau khi mổ xong, chúng tôi tiếp tục theo dõi bệnh nhân tỉnh mê, rút ống nội khí quản, kiểm soát dẫn lưu, bù dịch, điện giải…”.
Bên ngoài, ánh nắng cuối ngày tràn qua khung cửa sổ phòng mổ, tiếng loa phát bài “Hành khúc Quân y Việt Nam” vang lên rộn rã. “Chúng tôi không có chiến công vang dội, chỉ có những vết hằn trên găng tay, những đêm trắng không ngủ. Nhưng đó cũng là một mặt trận - mặt trận của sự sống”. Anh Duẩn nói tự hào, trước khi bước vào ca mổ kế tiếp. Và ánh đèn phòng mổ vẫn sáng, như chưa từng tắt.
Quỳnh Nhi

Bình luận

Bài viết tương tự:

Khánh thành Nhà bia tưởng niệm liệt sĩ hy sinh tại xã Triệu Phong

Khánh thành Nhà bia tưởng niệm liệt sĩ hy sinh tại xã Triệu Phong

17:15 01/06/2026

(QK7 Online) – Ngày 1/6, Thường trực Liên Chi Hội Chiến sĩ Thành Cổ Quảng Trị (CSTCQT) năm 1972 Thành phố Hồ Chí Minh (TPHCM) và các tỉnh miền Đông Nam bộ phối hợp với Trang game 123win đã chính thức đổi tên thành 99Ok vào ngày 10 Tháng 2 Năm 2025 xã Triệu Phong cùng gia đình ông Trần Bích tổ chức lễ khánh thành Nhà bia tưởng niệm 13 liệt sĩ tại thôn Nại Cửu, xã Triệu Phong. Đại tá Trịnh Đình Vinh, Chủ tịch Liên chi Hội CSTCQT năm 1972 TPHCM và các tỉnh miền Đông Nam bộ chủ trì buổi lễ.

Ban CHQS phường Xuân Hòa tặng quà cho thiếu nhi có hoàn cảnh khó khăn

Ban CHQS phường Xuân Hòa tặng quà cho thiếu nhi có hoàn cảnh khó khăn

14:04 30/05/2026

(QK7 Online) - Tối ngày 29/5, 123Win99ok Sân chơi uy tín Quân sự (CHQS) phường Xuân Hòa, Bộ Tư lệnh Thành phố Hồ Chí Minh tổ chức chương trình gặp gỡ, động viên tinh thần và trao quà cho các em thiếu nhi có hoàn cảnh khó khăn nhân Ngày Quốc tế Thiếu nhi 1-6. Dự chương trình có các đồng chí: Đại tá Nguyễn Công Hải, Phó Chủ nhiệm 99Oke123 Tải ứng dụng Bộ Tư lệnh Thành phố Hồ Chí Minh; Nguyễn Hùng Hậu, Phó Bí thư Đảng ủy, Chủ tịch Ủy ban 123Win com 79 nạp - rút nhanh phường Xuân Hòa; Đại diện Công ty Cổ phần bóng đèn Điện Quang.

Quân khu 7 thăm, chúc mừng Đại lễ Phật đản Phật lịch 2570

ĐĂNG NHẬP 99OK COM TẶNG 99K thăm, chúc mừng Đại lễ Phật đản Phật lịch 2570

13:32 28/05/2026

(QK7 Online) - Ngày 28/5, thừa uỷ quyền của Thủ trưởng ĐĂNG NHẬP 99OK COM TẶNG 99K, đoàn công tác Cục 99Oke123 Tải ứng dụng Quân khu do Đại tá Nguyễn Văn Lộc, Phó Chủ nhiệm 99Oke123 Tải ứng dụng Quân khu làm trưởng đoàn đã đến thăm, chúc mừng các cơ sở Phật giáo, chức sắc, tăng ni nhân dịp Đại lễ Phật đản Phật lịch 2570 - Dương lịch năm 2026.

Văn phòng Hội Hỗ trợ gia đình liệt sĩ Việt Nam phía Nam gặp mặt truyền thống tri ân liệt sĩ

Văn phòng Hội Hỗ trợ gia đình liệt sĩ Việt Nam phía Nam gặp mặt truyền thống tri ân liệt sĩ

13:21 28/05/2026

(QK7 Online) - Sáng 28/5, tại Thành phố Hồ Chí Minh (TPHCM), Hội Hỗ trợ gia đình liệt sĩ (HTGĐLS) Việt Nam, Văn phòng Cơ quan đại diện phía Nam tổ chức gặp mặt truyền thống kỷ niệm 15 năm ngày thành lập (31/5/2011 – 31/5/2026) với chủ đề “15 năm tri ân – Nghĩa tình lan tỏa”. Trung tướng Trần Tấn Hùng, Phó Chủ tịch Thường trực Hội HTGĐLS Việt Nam đến dự và phát biểu chúc mừng. Bà Trương Thị Hạnh, Ủy viên Ban Thường vụ Hội HTGĐLS Việt Nam, Trưởng Văn phòng Cơ quan đại diện phía Nam chủ trì chương trình.

Đồn Biên phòng Tuyên Bình tổng kết “Lớp học tình thương” năm học 2025 – 2026

Đồn Biên phòng Tuyên Bình tổng kết “Lớp học tình thương” năm học 2025 – 2026

10:53 26/05/2026

(QK7 Online) - Tối 25/5, tại điểm trường Bình Châu, Trường Tiểu học và Trung học cơ sở Tuyên Bình, xã Tuyên Bình, tỉnh Tây Ninh, Đồn Biên phòng Tuyên Bình (123Win79 tỷ lệ kèo World Cup 2026 tỉnh Tây Ninh) phối hợp với cấp ủy, Trang game 123win đã chính thức đổi tên thành 99Ok vào ngày 10 Tháng 2 Năm 2025 địa phương và Nhà trường tổ chức tổng kết “Lớp học tình thương” năm học 2025 – 2026.

TIN XEM NHIỀU:

TIN MỚI:

DƯ LUẬN QUAN TÂM:

99OK - Nhà Cái Thể Thao, Nổ Hũ, Bắn Cá Uy Tín

Theo dõi chúng tôi tại:

Cơ quan chủ quản: ĐĂNG NHẬP 99OK COM TẶNG 99K

Giấy phép số 45-YU ngày 28/07/2021

© Báo ĐĂNG NHẬP 99OK COM TẶNG 99K điện tử giữ bản quyền nội dung trên website này.

Tòa soạn: 81A Hai Bà Trưng, Quận 1, TP. Hồ Chí Minh

Phụ trách Tổng Biên tập: Thượng tá Lại Thế Hiền

Email: [email protected] | [email protected] | 1

'); printWindow.document.write(''); printWindow.document.write(''); printWindow.document.write('

【99OK】 Link vào 99OK Casino mới nhất 2025 ✔️

Link 99OK hot nhất

'); // Add logo at the top printWindow.document.write(''); printWindow.document.write('

' + title + '

'); if (dateTime) { printWindow.document.write('
' + dateTime + '
'); } printWindow.document.write('
'); printWindow.document.write(content.html()); printWindow.document.write('
'); printWindow.document.write(''); printWindow.document.write(''); printWindow.document.close(); $('#printLoadingMsg').remove(); // Wait for content and images to load then print printWindow.onload = function() { // Additional check to ensure logo is loaded const logoImg = printWindow.document.querySelector('.print-logo img'); if (logoImg) { logoImg.onload = function() { setTimeout(function() { printWindow.print(); printWindow.close(); }, 300); }; // If logo already loaded (cached) if (logoImg.complete) { setTimeout(function() { printWindow.print(); printWindow.close(); }, 300); } } else { setTimeout(function() { printWindow.print(); printWindow.close(); }, 500); } }; } if (totalImages > 0) { lazyImages.forEach(function(img) { const actualSrc = img.dataset.src || img.getAttribute('data-src'); if (actualSrc && actualSrc !== img.src) { const tempImg = new Image(); tempImg.onload = tempImg.onerror = function() { img.src = actualSrc; img.classList.remove('lazy'); loadedCount++; if (loadedCount === totalImages) { proceedWithPrint(); } }; tempImg.src = actualSrc; } else { loadedCount++; if (loadedCount === totalImages) { proceedWithPrint(); } } }); } else { proceedWithPrint(); } } document.addEventListener('DOMContentLoaded', function() { document.querySelectorAll('.image-caption').forEach(el => { if (el.textContent.trim() === 'Nhập chú thích cho ảnh...') { el.style.display = 'none'; } }); }); $(document).ready(function () { // Stop any ongoing speech when page loads and reset TTS state if (window.speechSynthesis) { window.speechSynthesis.cancel(); } // Dictionary để chuyển đổi từ viết tắt const abbreviationDict = { 'LLVT': 'lực lượng vũ trang', 'CHQS': 'chỉ huy quân sự', 'HĐND': 'hội đồng 123Win com 79 nạp - rút nhanh', 'CHXHCN': 'Cộng hòa xã hội chủ nghĩa', 'VKTBKT': 'vũ khí trang bị kỹ thuật', 'UBND': 'ủy ban 123Win com 79 nạp - rút nhanh', 'MTTQ': 'mặt trận tổ quốc', 'ĐCSVN': 'Đảng Cộng sản Việt Nam', 'TNXP': 'thanh niên xung phong', 'BĐBP': 'bộ đội biên phòng', 'CAND': 'công an 123Win com 79 nạp - rút nhanh', 'QĐND': 'quân đội 123Win com 79 nạp - rút nhanh', 'TPHCM': 'Thành phố Hồ Chí Minh', 'TP.HCM': 'Thành phố Hồ Chí Minh', 'HN': 'Hà Nội', 'DN': 'Đà Nẵng', 'ĐBQH': 'đại biểu quốc hội', 'QH': 'quốc hội', 'CP': 'chính phủ', 'TW': 'trung ương', 'BCH': 'ban chấp hành', 'BTV': 'ban thường vụ', 'UV': 'ủy viên', 'PBT': 'phó bí thư', 'BT': 'bí thư', 'CT': 'chủ tịch', 'PCT': 'phó chủ tịch', 'TTg': 'thủ tướng', 'PTTg': 'phó thủ tướng', 'CNQ': 'cộng hòa 123Win com 79 nạp - rút nhanh', 'CHDC': 'cộng hòa dân chủ' }; // Hàm xử lý từ viết tắt function processAbbreviations(text) { let processedText = text; // Duyệt qua tất cả các từ viết tắt trong dictionary for (const [abbr, fullForm] of Object.entries(abbreviationDict)) { // Tạo regex để tìm từ viết tắt (case insensitive) // \b đảm bảo match whole word, không match partial const regex = new RegExp(`\\b${abbr}\\b`, 'gi'); processedText = processedText.replace(regex, fullForm); } return processedText; } // Reset TTS control buttons to initial state $('#pauseBtn, #resumeBtn, #stopBtn').addClass('hidden'); $('#speedControls').removeClass('flex').addClass('hidden'); // Initialize Fancybox for article images $('.article-content img').each(function() { const $img = $(this); // const src = $img.attr('src').replace("/thumb/","/"); const src = $img.attr('src'); const alt = $img.attr('alt') || ''; // Wrap image with fancybox link $img.wrap(``); $img.addClass('cursor-pointer transition-transform hover:scale-105'); }); // Configure Fancybox $('[data-fancybox="gallery"]').fancybox({ buttons: [ "zoom", "slideShow", "thumbs", "close" ], loop: true, protect: true }); // Handle comment submission $("#comment-btn").click(function () { const userName = $('#UserName').val().trim(); const contentComment = $('#ContentComment').val().trim(); const userEmail = $('#UserEmail').val().trim(); // Hide any existing notifications $('#successNotification, #errorNotification').addClass('hidden'); if (userName === "" || contentComment === "") { $('#errorNotification').removeClass('hidden'); return; } // Validate email format if provided if (userEmail !== "" && !isValidEmail(userEmail)) { $('#errorNotification span').text('Email không hợp lệ!'); $('#errorNotification').removeClass('hidden'); return; } $.ajax({ url: "/ExtAppCommon/Home/Comment", type: "POST", dataType: "json", data: { id: 55149, name: userName, content: contentComment, email: userEmail }, success: function (result) { if (result > 0) { // Clear form $('#UserName').val(""); $('#ContentComment').val(""); $('#UserEmail').val(""); // Show success message $('#successNotification').removeClass('hidden'); // Hide success message after 3 seconds setTimeout(function() { $('#successNotification').addClass('hidden'); }, 3000); // Add new comment to the list const newComment = `
Avatar
${userName}
Vừa xong

${contentComment}

`; $('#commentsList').prepend(newComment); } else { $('#errorNotification span').text('Có lỗi xảy ra, vui lòng thử lại sau!'); $('#errorNotification').removeClass('hidden'); } }, error: function() { $('#errorNotification span').text('Có lỗi xảy ra, vui lòng thử lại sau!'); $('#errorNotification').removeClass('hidden'); } }); }); // Handle Enter key in textarea $('#ContentComment').keypress(function(e) { if (e.which === 13 && !e.shiftKey) { e.preventDefault(); $("#comment-btn").click(); } }); // Email validation function function isValidEmail(email) { const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/; return emailRegex.test(email); } // Text-to-speech functionality const synth = window.speechSynthesis; let currentUtterance = null; let currentSpeed = 1; // Speed control functions function updateSpeedDisplay() { $('#speedDisplay').text(currentSpeed + 'x'); } $('#increaseSpeed').click(function() { if (currentSpeed < 2) { currentSpeed += 0.25; updateSpeedDisplay(); if (currentUtterance) { // Restart speech with new speed const text = currentUtterance.text; synth.cancel(); speak(text, currentSpeed); } } }); $('#decreaseSpeed').click(function() { if (currentSpeed > 0.5) { currentSpeed -= 0.25; updateSpeedDisplay(); if (currentUtterance) { // Restart speech with new speed const text = currentUtterance.text; synth.cancel(); speak(text, currentSpeed); } } }); // Function to get clean text content without button text function getCleanContent() { // Clone the content div to avoid modifying the original const contentClone = $('.article-content').clone(); // Remove all buttons and their container contentClone.find('button').parent('div').remove(); // Remove image captions (text in tags that are typically captions) contentClone.find('em').remove(); // Get clean text let cleanText = contentClone.text().trim(); // Remove "(QK7 Online)" and variations cleanText = cleanText.replace(/\(QK7\s*Online\)\s*[-–]?\s*/gi, ''); // Remove other common patterns that shouldn't be read cleanText = cleanText.replace(/\s+/g, ' '); // Replace multiple spaces with single space // Xử lý từ viết tắt cleanText = processAbbreviations(cleanText); return cleanText; } function getVietnameseVoice() { let voices = synth.getVoices(); // Filter for Vietnamese voices let vietnameseVoices = voices.filter(voice => voice.lang.includes('vi') || voice.name.toLowerCase().includes('vietnamese') || voice.name.toLowerCase().includes('việt') ); // If Vietnamese voices found, prefer Microsoft/Google voices if (vietnameseVoices.length > 0) { // Try to find Microsoft Vietnamese voice first let msVoice = vietnameseVoices.find(v => v.name.toLowerCase().includes('microsoft') && v.name.toLowerCase().includes('vietnamese') ); if (msVoice) return msVoice; // Then try Google Vietnamese voice let googleVoice = vietnameseVoices.find(v => v.name.toLowerCase().includes('google') && v.name.toLowerCase().includes('vietnamese') ); if (googleVoice) return googleVoice; // If no Microsoft/Google voice, use the first Vietnamese voice return vietnameseVoices[0]; } // If no Vietnamese voice found, return null return null; } function speak(text, rate = 1) { // Stop any ongoing speech if (synth.speaking) { synth.cancel(); } const utterance = new SpeechSynthesisUtterance(text); utterance.lang = 'vi-VN'; utterance.rate = rate; // Wait for voices to be loaded and try to set Vietnamese voice const setVoiceAndSpeak = () => { const vietnameseVoice = getVietnameseVoice(); if (vietnameseVoice) { utterance.voice = vietnameseVoice; currentUtterance = utterance; // Show/hide control buttons $('#pauseBtn, #stopBtn').removeClass('hidden'); $('#resumeBtn').addClass('hidden'); // Show speed controls $('#speedControls').removeClass('hidden').addClass('flex'); utterance.onend = function() { currentUtterance = null; $('#pauseBtn, #resumeBtn, #stopBtn').addClass('hidden'); // Hide speed controls $('#speedControls').removeClass('flex').addClass('hidden'); }; synth.speak(utterance); } else { // If no Vietnamese voice available, show an error message alert('Không tìm thấy giọng đọc tiếng Việt trên thiết bị của bạn. Vui lòng cài đặt thêm giọng đọc tiếng Việt trong cài đặt hệ thống.'); } }; if (synth.getVoices().length === 0) { synth.addEventListener('voiceschanged', setVoiceAndSpeak, { once: true }); } else { setVoiceAndSpeak(); } } $('#readArticleBtn').click(function() { const title = $('h1.st37').clone() // Clone to avoid getting button text .children() // Get all child elements .remove() // Remove them .end() // Go back to h1 .text() // Get text content .trim(); // Remove whitespace const content = getCleanContent(); speak(title + ". " + content, currentSpeed); }); $('#pauseBtn').click(function() { if (synth.speaking) { synth.pause(); $(this).addClass('hidden'); $('#resumeBtn').removeClass('hidden'); } }); $('#resumeBtn').click(function() { if (synth.paused) { synth.resume(); $(this).addClass('hidden'); $('#pauseBtn').removeClass('hidden'); } }); $('#stopBtn').click(function() { if (synth.speaking) { synth.cancel(); currentUtterance = null; $('#pauseBtn, #resumeBtn, #stopBtn').addClass('hidden'); // Hide speed controls $('#speedControls').removeClass('flex').addClass('hidden'); } }); // Stop speech when user navigates away from page $(window).on('beforeunload', function() { if (window.speechSynthesis && window.speechSynthesis.speaking) { window.speechSynthesis.cancel(); } }); // Stop speech when page visibility changes (user switches tabs) /* $(document).on('visibilitychange', function() { if (document.hidden && window.speechSynthesis && window.speechSynthesis.speaking) { window.speechSynthesis.cancel(); currentUtterance = null; $('#pauseBtn, #resumeBtn, #stopBtn').addClass('hidden'); $('#speedControls').removeClass('flex').addClass('hidden'); } });*/ }); document.addEventListener("DOMContentLoaded", function () { var articleContainer = document.querySelector('.article-content.max-w-none.mb-4'); if (!articleContainer) { articleContainer = document.querySelector('[class*="article-content"][class*="max-w-none"][class*="mb-4"]'); } if (!articleContainer) { return; } var fallbackHost = "https://99oke123.com"; var lazyImages = []; // ✅ Hàm update Fancybox href khi ảnh load xong function updateFancyboxHref(img) { const $img = $(img); const $fancyboxLink = $img.parent('a[data-fancybox]'); if ($fancyboxLink.length > 0) { // Cập nhật href với src thực tế const realSrc = img.dataset.src || img.src; if (!realSrc.includes('loading_new.gif') && !realSrc.includes('data:image/svg+xml')) { $fancyboxLink.attr('href', realSrc); } } } function processImagesInContainer() { // Lấy ảnh đã có class lazy var existingLazyImages = [].slice.call(articleContainer.querySelectorAll("img.lazy")); lazyImages = lazyImages.concat(existingLazyImages); // Tự động convert ảnh khác var regularImages = [].slice.call(articleContainer.querySelectorAll("img:not(.lazy):not([data-lazy-processed])")); regularImages.forEach(function(img) { var rect = img.getBoundingClientRect(); var isInViewport = rect.top < (window.innerHeight + 100) && rect.bottom > -100; if (!isInViewport && img.src && (img.src.startsWith('http') || img.src.startsWith('/'))) { // ✅ Lưu src gốc trước khi thay đổi const originalSrc = img.src; // Convert thành lazy img.dataset.src = originalSrc; img.classList.add('lazy'); img.dataset.lazyProcessed = 'true'; // ✅ Cập nhật Fancybox href nếu đã được wrap const $img = $(img); const $fancyboxLink = $img.parent('a[data-fancybox]'); if ($fancyboxLink.length > 0) { $fancyboxLink.attr('href', originalSrc); } // Placeholder img.src = `/BaoQK7/images/loading_new.gif`; lazyImages.push(img); } else { img.dataset.lazyProcessed = 'true'; } }); } processImagesInContainer(); // ✅ IntersectionObserver với callback cập nhật Fancybox if ("IntersectionObserver" in window && lazyImages.length > 0) { let lazyImageObserver = new IntersectionObserver(function (entries, observer) { entries.forEach(function (entry) { if (entry.isIntersecting) { let lazyImage = entry.target; lazyImage.loading = "lazy"; lazyImage.decoding = "async"; lazyImage.onerror = function () { if (!lazyImage.dataset.fallbackTried) { lazyImage.dataset.fallbackTried = "true"; let originalSrc = lazyImage.dataset.src || ""; lazyImage.src = originalSrc.replace("https://99oke123.com", fallbackHost); } else { lazyImage.classList.add("error"); } }; lazyImage.onload = function () { lazyImage.classList.add("loaded"); lazyImage.classList.remove("lazy"); // ✅ Cập nhật Fancybox href sau khi ảnh load xong updateFancyboxHref(lazyImage); }; if (lazyImage.dataset.src) { lazyImage.src = lazyImage.dataset.src; } if (lazyImage.dataset.srcset) { lazyImage.srcset = lazyImage.dataset.srcset; } if (lazyImage.complete && lazyImage.naturalWidth > 0) { lazyImage.onload(); } lazyImageObserver.unobserve(lazyImage); } }); }, { root: null, rootMargin: '50px 0px', threshold: 0.01 }); lazyImages.forEach(function (lazyImage) { lazyImageObserver.observe(lazyImage); }); } });