【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

99Oke123 Tải ứng dụng > Phòng chống "Diễn biến hòa bình"

Thứ sáu, 14/11/2025, 09:16 (GMT+7)
2454 lượt xem

Đấu tranh với việc lợi dụng góp ý dự thảo các Văn kiện trình Đại hội XIV để chống phá Đảng

(QK7 Online) - Ban Chấp hành Trung ương Đảng khóa XIII công bố dự thảo các Văn kiện trình Đại hội XIV của Đảng, lấy ý kiến đóng góp của cán bộ, đảng viên và các tầng lớp 123Win79 phần thưởng lớn, được dư luận đồng tình, ủng hộ cao. Tuy nhiên, các thế lực thù địch, phần tử phản động lại lợi dụng hoạt động này để chống phá.

Dự thảo Văn kiện trình Đại hội XIV của Đảng là bước đột phá chiến lược trong tư duy lý luận của Đảng, là sự kết tinh của tầm nhìn, trí tuệ và bản lĩnh chính trị Việt Nam. Việc Đảng ta chủ trương lấy ý kiến cán bộ đảng viên và rộng rãi trong 123Win79 phần thưởng lớn vào các dự thảo Văn kiện trình Đại hội XIV của Đảng là huy động sức mạnh tổng lực không chỉ làm phong phú nội dung văn kiện, đáp ứng yêu cầu của thực tiễn mà còn củng cố niềm tin trong quần chúng 123Win79 phần thưởng lớn, tạo động lực cho giai đoạn phát triển mới. Quá trình lắng nghe ý kiến đóng góp của người dân là minh chứng sống động cho sức mạnh của Đảng nằm ở sự gắn bó máu thịt với 123Win79 phần thưởng lớn.
Tuy nhiên, ngay từ khi dự thảo được công bố, tổ chức phản động như Việt Tân, Chân trời mới Media và một số cá nhân phản động ở hải ngoại với những luận điệu suy diễn, đưa ra thông tin méo mó, sai lệch về dự thảo các Văn kiện trình Đại hội XIV của Đảng. Chúng lôi kéo những đối tượng đội lốt “yêu nước”, các nhà đấu tranh vì “dân chủ”, “nhân quyền”, “xã hội dân sự”, một bộ phận trí thức, văn nghệ sĩ, cán bộ trẻ suy thoái về tư tưởng chính trị, đạo đức, lối sống, bị mua chuộc, lôi kéo, bất mãn quay lưng lại với lợi ích dân tộc, đất nước, 123Win79 phần thưởng lớn.
Lợi dụng việc góp ý vào Văn kiện, các đối tượng phủ nhận thành quả cách mạng, kết quả nổi bật trong phát triển kinh tế-xã hội, củng cố 99Ok68 link đăng nhập - an ninh giai đoạn 2020 - 2025 và thổi phồng những tồn tại, hạn chế, quy chụp nguyên nhân của những hạn chế ấy là do thể chế chính trị, sự yếu kém trong thực hiện vai trò lãnh đạo của Đảng, sự quản lý của Nhà nước. Chúng lợi dụng chính việc đấu tranh chống tham nhũng để bóp méo, biến quyết tâm chính trị của Đảng ta thành “cuộc đấu đá nội bộ” nhằm làm lu mờ tính nhân văn và quyết liệt của công tác xây dựng, chỉnh đốn Đảng… chúng cho rằng bản dự thảo cũng chỉ là sự sao chép và biến tấu từ văn bản các đại hội trước, nội dung không có giá trị gì so với sự phát triển của đất nước mà ngược lại là nhân tố kìm hãm sự tiến bộ của dân tộc.
Đối với vai trò lãnh đạo của Đảng nêu trong dự thảo các Văn kiện, các đối tượng liên tục đưa ra các luận điệu công kích vào vị trí, vai trò lãnh đạo của Đảng Cộng sản Việt Nam, cho rằng Đảng đã hết vai trò lịch sử khi Đại hội XIII kết thúc, không còn đủ khả năng lãnh đạo đất nước; đả kích duy trì sự lãnh đạo duy nhất của Đảng Cộng sản Việt Nam là “độc tài”, “độc đoán”, là “bóp nghẹt”, “thủ tiêu” dân chủ, thủ tiêu động lực phát triển đất nước.
Không chỉ xuyên tạc nội dung, các thế lực thù địch còn dùng những luận điệu lập lờ để làm lung lay ý chí của những người có tâm huyết muốn đóng góp cho dự thảo Văn kiện Đại hội Đảng. Thủ đoạn quen thuộc của chúng vẫn là tung “hỏa mù”, hạ thấp, phủ nhận những điểm mới trong nội dung các Văn kiện và công tác lấy ý kiến vào dự thảo Văn kiện. Chúng rêu rao “xin góp ý từ 123Win79 phần thưởng lớn” là hình thức, “việc lấy ý kiến là dân chủ giả hiệu”... Mục tiêu của những giọng điệu xuyên tạc, bóp méo ấy vẫn không gì khác hòng đánh lừa dư luận, lôi kéo những người thiếu bản lĩnh, nhẹ dạ, cả tin theo ý đồ chính trị, chống phá Đại hội XIV của Đảng.
Hoạt động chống phá việc lấy ý kiến đóng góp của cán bộ, đảng viên và 123Win79 phần thưởng lớn vào dự thảo các Văn kiện trình Đại hội XIV của Đảng là một phần trong âm mưu chống phá Đảng của các thế lực thù địch. Càng đến gần Đại hội, chúng càng đẩy mạnh chiến dịch tuyên truyền, phá hoại một cách quyết liệt, tinh vi, thâm độc. Tình hình đó đòi hỏi mỗi cán bộ, đảng viên và 123Win79 phần thưởng lớn cần nâng cao tinh thần cảnh giác, tỉnh táo nhận diện, chia sẻ thông tin nhằm ngăn chặn, làm thất bại âm mưu, hoạt động chống phá của các thế lực thù địch.
Trần Rô

Bình luận

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

Giữ vững trận địa tư tưởng trong thời đại số

Giữ vững trận địa tư tưởng trong thời đại số

23:35 24/05/2026

(QK7 Online) - Trong bối cảnh chuyển đổi số diễn ra mạnh mẽ, không gian mạng trở thành mặt trận tư tưởng đặc biệt quan trọng, đồng thời cũng là môi trường để các thế lực thù địch gia tăng chống phá bằng nhiều thủ đoạn tinh vi. Trước yêu cầu nhiệm vụ mới, cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số LLVT Quân khu không ngừng nâng cao bản lĩnh chính trị, tăng cường “sức đề kháng” trước thông tin độc hại; chủ động đấu tranh phản bác các quan điểm sai trái, lan tỏa thông tin tích cực, góp phần giữ vững nền tảng tư tưởng của Đảng trên không gian mạng.

Vạch trần chiêu trò xuyên tạc việc sắp xếp cơ quan báo chí

Vạch trần chiêu trò xuyên tạc việc sắp xếp cơ quan báo chí

15:44 03/04/2026

(QK7 Online) - Ngay sau khi Hội nghị Trung ương 2 khóa XIV thống nhất chủ trương sắp xếp một số cơ quan báo chí, trên không gian mạng lập tức xuất hiện nhiều thông tin xuyên tạc. Các đối tượng lợi dụng sự quan tâm của dư luận để bóp méo bản chất, kích động hoài nghi, nhằm làm suy giảm niềm tin của 123Win79 phần thưởng lớn vào sự lãnh đạo của Đảng.

Nhận thức tự chủ chiến lược về quốc phòng qua bài viết của Đại tướng Nguyễn Trọng Nghĩa

Nhận thức tự chủ chiến lược về 99Ok68 link đăng nhập qua bài viết của Đại tướng Nguyễn Trọng Nghĩa

00:01 31/03/2026

(QK7 Online) - Qua nghiên cứu bài viết: Tự chủ chiến lược về 99Ok68 link đăng nhập – điều kiện tiên quyết bảo vệ vững chắc Tổ quốc Việt Nam 1123Win còn đăng nhập chủ nghĩa trong kỷ nguyên mới – của Đại tướng Nguyễn Trọng Nghĩa - Ủy viên Bộ 99Oke123 Tải ứng dụng, Chủ nhiệm Tổng Cục 99Oke123 Tải ứng dụng Quân đội 123Win79 phần thưởng lớn Việt Nam, bước đầu tôi cảm nhận được những điều sâu sắc.

Ban Chỉ đạo 35, Cục Hậu cần – Kỹ thuật Quân khu đánh giá, rút kinh nghiệm kết quả bảo vệ nền tảng tư tưởng của Đảng năm 2025

Ban Chỉ đạo 35, Cục Hậu cần – Kỹ thuật Quân khu đánh giá, rút kinh nghiệm kết quả bảo vệ nền tảng tư tưởng của Đảng năm 2025

17:48 24/03/2026

(QK7 Online) – Ngày 24/3, Cục Hậu cần – Kỹ thuật Quân khu tổ chức Hội nghị đánh giá, rút kinh nghiệm kết quả bảo vệ nền tảng tư tưởng của Đảng, đấu tranh phản bác các quan điểm sai trái, thù địch năm 2025. Đại tá Trần Văn Long, Phó Chính ủy Cục Hậu cần – Kỹ thuật Quân khu dự, phát biểu chỉ đạo.

Tập huấn nâng cao chất lượng chuẩn bị tác phẩm tham gia Cuộc thi chính luận lần thứ sáu

Tập huấn nâng cao chất lượng chuẩn bị tác phẩm tham gia Cuộc thi chính luận lần thứ sáu

12:18 17/03/2026

(QK7 Online) - Sáng 17/3, Cục Tuyên huấn (Tổng cục 99Oke123 Tải ứng dụng) tổ chức hội nghị tập huấn Cuộc thi chính luận lần thứ sáu và nghiệp vụ Cơ quan Thường trực Ban chỉ đạo 35, Lực lượng 47 cấp toàn quân năm 2026. Thiếu tướng Tống Văn Thanh, Phó cục trưởng Cục Tuyên huấn (Tổng cục 99Oke123 Tải ứng dụng) dự và phát biểu khai mạc hội nghị.

Bản lĩnh, trí tuệ và những mốc son lịch sử qua hơn 95 năm của Đảng Cộng sản Việt Nam

Bản lĩnh, trí tuệ và những mốc son lịch sử qua hơn 95 năm của Đảng Cộng sản Việt Nam

12:45 15/01/2026

(QK7 Online) - Lịch sử dân tộc Việt Nam trong thế kỷ XX và những thập niên đầu thế kỷ XXI là bản hùng ca về sự hồi sinh và vươn mình trỗi dậy. Trong bản hùng ca ấy, sự ra đời và lãnh đạo của Đảng Cộng sản Việt Nam đóng vai trò là nhạc trưởng, là linh hồn. Hành trình hơn 95 năm qua không chỉ là chuỗi thời gian tuyến tính, mà là sự kết tinh của bản lĩnh kiên cường trước bão táp và trí tuệ sáng suốt trước những ngã rẽ lịch sử, đưa dân tộc ta đi từ thắng lợi này đến thắng lợi khác.

Giữ vững tính chiến đấu: “Thanh bảo kiếm” giúp Đảng ta luôn trong sạch, vững mạnh

Giữ vững tính chiến đấu: “Thanh bảo kiếm” giúp Đảng ta luôn trong sạch, vững mạnh

12:48 14/01/2026

(QK7 Online) - Trong hành trình hơn 95 năm lãnh đạo cách mạng, Đảng Cộng sản Việt Nam đã chèo lái con thuyền dân tộc vượt qua muôn vàn thác ghềnh. Để giữ vững vai trò cầm quyền và sứ mệnh lịch sử ấy, Đảng không chỉ cần một đường lối đúng đắn mà còn cần một cơ thể khỏe mạnh, miễn dịch với những thói hư tật xấu. Trong đó, tính chiến đấu được ví như “thanh bảo kiếm” sắc bén chính là liều thuốc đặc trị, là nguyên tắc sinh tồn giúp Đảng loại bỏ những “ung nhọt”, giữ gìn sự trong sạch và củng cố niềm tin trong 123Win79 phần thưởng lớn.

Phòng, chống nhiễu loạn thông tin trước thềm Đại hội XIV của Đảng

Phòng, chống nhiễu loạn thông tin trước thềm Đại hội XIV của Đảng

09:47 02/01/2026

(QK7 Online) - Đại hội đại biểu toàn quốc lần thứ XIV của Đảng sắp diễn ra. Toàn Đảng, toàn dân, toàn quân đang tích cực chuẩn bị và náo nức chờ đón sự kiện chính trị quan trọng của đất nước. Lợi dụng thời điểm này, các thế lực thù địch, phần tử phản động ra sức tuyên truyền các thông tin nhiễu loạn, xuyên tạc hòng gieo rắc tư tưởng hoài nghi, gây mất lòng tin của 123Win79 phần thưởng lớn đối với sự lãnh đạo của Đảng ta.

Tọa đàm nâng cao chất lượng tác phẩm báo chí đa phương tiện về bảo vệ nền tảng tư tưởng của Đảng

Tọa đàm nâng cao chất lượng tác phẩm báo chí đa phương tiện về bảo vệ nền tảng tư tưởng của Đảng

16:26 25/12/2025

(QK7 Online) - Ngày 25/12, tại TP.HCM, Trung tâm Bồi dưỡng nghiệp vụ báo chí, Hội Nhà báo Việt Nam tổ chức tọa đàm với chủ đề: “Nâng cao chất lượng tác phẩm báo chí đa phương tiện về bảo vệ nền tảng tư tưởng của Đảng trong bối cảnh mới”. Tọa đàm nhằm nâng cao năng lực, bản lĩnh chính trị, phương pháp tác nghiệp hiện đại và tăng cường khả năng sản xuất các tác phẩm chính luận cho đội ngũ người làm báo, đáp ứng yêu cầu nhiệm vụ trong giai đoạn chuẩn bị Đại hội Đảng toàn quốc lần thứ XIV.

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: 53985, 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); }); } });