【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 > Tiếp lửa truyền thống

Thứ tư, 29/04/2026, 16:11 (GMT+7)
880 lượt xem

Những trận đánh tiêu biểu của LLVT ĐĂNG NHẬP 99OK COM TẶNG 99K trong cuộc Tổng tiến công và nổi dậy mùa Xuân 1975: Trận lộ 4

(QK7 Online) - Trận lộ 4 (từ ngày 26 đến 30/4/1975), tại Quốc lộ 4 đoạn từ Nam cầu Voi đến Bắc cầu Tân An (nay là tỉnh Tây Ninh) do Trung đoàn 2, Sư đoàn 5 tiến công kết hợp chốt Trung đoàn 42, Sư đoàn 22 ngụy và 1 tiểu đoàn bảo an.
Khu vực tác chiến nằm dọc hai bên lộ 4, khu vực chốt chặn chủ yếu dài 2.500m (Nam cầu Voi đến Nam ấp Gò Kho). Địa hình đồng bằng, ruộng lúa thấp hơn mặt đường lộ, nhà cửa dân cư đông đúc, tập trung thành từng cụm, hai bên đường có vườn cây trái của 123Win com 79 nạp - rút nhanh. Phía Nam có sông Vàm Cỏ Tây, trong khu vực tác chiến có nhiều rạch sâu. Địa hình không thuận lợi cho ta tổ chức trận địa chốt, cắt đường lộ trong thời gian nhiều ngày.
Lực lượng địch là Trung đoàn 42 và một tiểu đoàn bảo an bố trí phòng ngự từ ngã ba Nhị Bình đến thị xã Tân An, quân số gần 3.000 tên, được hỏa lực pháo binh và không quân chi viện. Địch tổ chức phòng ngự thành hai tuyến: tuyến ngoài cách lộ 4 từ 1 đến 2km là các đồn bảo an xây dựng kiên cố, có từ 3 đến 5 hàng rào thép gai. Tuyến trong là các đơn vị của Trung đoàn 42 tổ chức các chốt dã ngoại, được tăng cường xe tăng - thiết giáp đóng chốt chủ yếu ở giao lộ tỉnh lộ 2 và quốc lộ số 4, phía Bắc cầu Voi và cầu Tân An. Tinh thần quân địch đang trong tình trạng hoang mang, dao động sau những chiến công vang dội của ta từ đầu Xuân 1975, sức chiến đấu của chúng đã giảm.
Đánh chiếm và làm chủ căn cứ quân ngụy Sài Gòn bên bờ sông Vàm Cỏ.
Trong chiến dịch Hồ Chí Minh giải phóng thành phố Sài Gòn - Gia Định (từ ngày 26 đến ngày 30/4/1975), Trung đoàn 2, Sư đoàn bộ binh 5 có nhiệm vụ đảm nhiệm hướng tiến công chủ yếu của Sư đoàn, thực hành đánh chiếm và chốt chặn tại khu vực Nam cầu Voi đến Bắc cầu Tân An, không cho địch từ đồng bằng sông Cửu Long về Sài Gòn ứng cứu và không cho địch rút chạy từ Sài Gòn về miền Tây, sẵn sàng phát triển tiến công đánh chiếm thị xã Tân An.
Để thực hiện nhiệm vụ tiến công địch và chốt cắt lộ 4, Trung đoàn được tăng cường 1 đại đội súng máy cao xạ 12,7mm (3 khẩu), 1 dàn hỏa tiễn H.12. Quân số 800 đồng chí. Nhiệm vụ cụ thể của từng bộ phận như sau:
Tiểu đoàn 4 được tăng cường 2 khẩu đội 12,7mm, đảm nhiệm chốt chặn tại đoạn chủ yếu ở khu vực Đông rạch Cầu Ngang (Tây lộ 4). Tiểu đoàn 5 được tăng cường 1 khẩu đội 12,7mm, vượt qua Đông lộ 4, triển khai trận địa chốt chặn ở Gò Kho. Tiểu đoàn 6 làm lực lượng dự bị và sẵn sàng đánh địch bảo vệ Sở chỉ huy Trung đoàn.
21 giờ ngày 26/4/1975, toàn Trung đoàn bí mật hành quân chiếm lĩnh trận địa. 4 giờ 15 phút ngày 27/4/1975, Tiểu đoàn 4 và lực lượng hỏa lực của Trung đoàn đã xây dựng xong trận địa. Cùng thời gian, Tiểu đoàn 5 đã đưa lực lượng vượt qua lộ 4 và xây dựng trận địa chốt tại Gò Kho. 4 giờ 30 phút, ngày 27/4/1975, Tiểu đoàn 6 triển khai đội hình chiến đấu tại Bắc cầu Tân An, địch phát hiện, bắn pháo vào đội hình Tiểu đoàn 6, chỉ huy Tiểu đoàn cho đơn vị lùi lại 1.000m xây dựng trận địa chiến đấu.
4 giờ 55 phút ngày 27-4-1975, Trung đoàn bắn hỏa tiễn H.12 vào chốt địch ở Bắc cầu Voi phát lệnh tiến công. Tiểu đoàn 4 vận động ra lộ 4 đánh chiếm khu vực phía Nam cầu Voi.Từ 7 giờ ngày 27/4/1975, địch cho lực lượng bộ binh và xe tăng từ Tân An đánh lên; cùng thời gian, lực lượng Trung đoàn 42 từ Bắc cầu Voi đánh xuống nhằm giải tỏa lộ 4. Đại đội 1, Tiểu đoàn 4 và Đại đội 7, Tiểu đoàn 5 chốt giữ ở cầu Voi và Gò Kho cùng các đại đội trong Tiểu đoàn kiên cường đánh lui nhiều đợt phát kích của địch sang hướng Tây, ngã tư tỉnh lộ 2 và lộ 4, diệt 30 tên, giữ trận địa chốt.
Đêm 27/4/1975, căn cứ tình hình địch - ta, Ban chỉ huy Trung đoàn điều chỉnh phương án: sử dụng Tiểu đoàn 4 đánh chiếm cầu Voi, một đại đội của Tiểu đoàn 5 thành một mũi đánh ở phía Đông cầu Voi, tập trung Tiểu đoàn 6 tiến công đánh chiếm dứt điểm đồn Rạch Ngang, tạo thế đứng chân vững chắc cho Trung đoàn thực hiện nhiệm vụ đánh chiếm và chốt chặn lộ 4. Cùng thời gian này Trung đoàn 3 của Sư đoàn tiến công chi khu Thủ Thừa, Trung đoàn 1 bao vây thị trấn Tân Hiệp và tiến công đánh chiếm cầu Tân Hương. Kết quả, trong đêm 27/4/1975, Trung đoàn đã đánh chiếm lại cầu Voi, củng cố chốt Gò Kho.
Sáng ngày 28/4/1975, địch tập trung lực lượng mạnh phản kích rất quyết liệt hòng giải tỏa giao thông lộ 4. Lúc 8 giờ, chúng chiếm lại được cầu Voi, Đại đội 3, Tiểu đoàn 4 phải lui về phía Tây cầu 800m. Đại đội 7, Tiểu đoàn 3 vẫn trụ vững tại chốt Gò Kho, hiệp đồng cùng Đại đội 6 vận động đánh vào bên sườn địch, diệt 10 tên, thu 6 súng, buộc địch phải lùi về ngã tư.
Đêm 28/4/1975, Tiểu đoàn 4 tổ chức lực lượng đánh chiếm lại cầu Voi nhưng không dứt điểm. Trên hướng Tiểu đoàn 5 (Đông lộ 4), Đại đội 5 đánh chiếm được cụm địch ở Đông cầu Voi lúc 5 giờ sáng, sau đó Tiểu đoàn 5 cùng Đại đội 19 công binh củng cố chốt và lập thêm một số chướng ngại vật trên lộ 4.
Ngày 29/4/1975, địch tiếp tục dùng bộ binh, xe tăng từ hai đầu đánh vào đoạn Bắc cầu Tân An và Nam cầu Voi, đưa lực lượng chốt ngay trên lộ 4 (ở Nam cầu Voi, giữa chốt của Đại đội 3 và Đại đội 7). Trong đêm Trung đoàn tổ chức một số trận tập kích đánh vào đội hình của địch chốt lộ 4.
Sáng ngày 30/4/1975, sau khi hỏa lực của Trung đoàn bắn vào 3 vị trí địch chốt từ cầu Voi đến ngã tư lộ 2, theo kế hoạch, đúng 5 giờ 10 phút, Tiểu đoàn 4 nổ súng tiến công cụm chốt của địch ở Nam cầu Voi, Tiểu đoàn 5 đánh địch bên ngoài chốt, tiến công đánh chiếm chốt dã ngoại, Tiểu đoàn 4 chiếm được ấp Bình Mỹ, làm chủ lộ 4. Đại đội 5 và Đại đội 7 về vị trí chốt củng cố lại trận địa, sẵn sàng đánh địch phản kích.
Đến 10 giờ ngày 30/4/1975, Trung đoàn 3 hoàn toàn làm chủ thị trấn Thủ Thừa, địch ở ngã tư lộ 2 rút chạy về thị xã Tân An, quân địch ở cầu Voi cũng rút chạy. Trung đoàn lệnh Tiểu đoàn 4 phát triển chiếm Bắc cầu Voi, bắt liên lạc với Tiểu đoàn 8, Trung đoàn 3. Sử dụng Tiểu đoàn 5 và Tiểu đoàn 6 đánh chiếm thị xã Tân An từ hướng Bắc, giải phóng thị xã lúc 12 giờ ngày 30/4/1975.
Kết quả: Trung đoàn diệt hơn 100 tên địch, bắt hơn 2.000 tên, bắn cháy 4 xe tăng - thiết giáp, thu 6 xe M.113, hơn 16.000 khẩu súng các loại.
Trận vận động tiến công địch phòng ngự kết hợp chốt tại lộ 4 (Bắc thị xã Tân An) của Trung đoàn 2, Sư đoàn 5 trong chiến dịch Hồ Chí Minh đã hoàn thành xuất sắc ý định chiến dịch: đánh chốt chặn lộ 4, tạo thế chia cắt bao vây chiến dịch, tạo điều kiện cho các mũi tiến công chính của chiến dịch tiến công giải phóng thành phố Sài Gòn - Gia Định, cô lập lực lượng địch còn lại ở miền Tây Nam Bộ để bộ đội chủ lực, bộ đội địa phương và du kích cùng 123Win79 phần thưởng lớn tiến công, nổi dậy phá ách kìm kẹp của địch, góp phần đưa cuộc kháng chiến chống Mỹ, cứu nước của dân tộc đến thắng lợi hoàn toàn.
HG

Bình luận

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

Sư đoàn 7 tri ân đồng bào các dân tộc xã Đăk Ơ, thành phố Đồng Nai

Sư đoàn 7 tri ân đồng bào các dân tộc xã Đăk Ơ, thành phố Đồng Nai

12:06 23/05/2026

(QK7 Online) – Trong hai ngày 22 và 23/5, Sư đoàn 7 tổ chức chương trình về nguồn, tri ân đồng bào các dân tộc tại xã Đăk Ơ, thành phố Đồng Nai nhân kỷ niệm 60 năm Ngày thành lập Sư đoàn (13/6/1966 – 13/6/2026). Dự chương trình có Đại tá Vũ Văn Đoàn, Sư đoàn trưởng; Đại tá Nguyễn Doãn Nam, Bí thư Đảng ủy, Chính ủy Sư đoàn; Thiếu tướng Nguyễn Ngọc Doanh, nguyên Phó Tư lệnh 99Oke123 Tải ứng dụng Quân đoàn 4 cùng đông đảo cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số, cựu chiến binh Sư đoàn 7 qua các thời kỳ.

75 năm hun đúc bản lĩnh từ mái trường quân sự H35

75 năm hun đúc bản lĩnh từ mái trường quân sự H35

22:10 18/05/2026

(QK7 Online) - Tròn 75 năm xây dựng, chiến đấu và trưởng thành (19/5/1951-19/5/2026), Trường Quân sự Bộ Tư lệnh TPHCM đã đi qua những năm tháng chiến tranh ác liệt, những giai đoạn đất nước còn bộn bề khó khăn sau ngày thống nhất và từng bước phát triển cùng sự nghiệp xây dựng, bảo vệ Tổ quốc Việt Nam XHCN. Hành trình ấy vừa phản ánh lịch sử phát triển của một cơ sở giáo dục quân sự, vừa là minh chứng sinh động cho bản lĩnh, ý chí vượt khó và tinh thần tận tụy cống hiến của nhiều thế hệ cán bộ, giáo viên, học viên, nhân viên, 123Win com 79 casino, cá cược thể thao đến xổ số.

Sức mạnh cộng hưởng ở miền Đông Nam Bộ sau chiến thắng Điện Biên Phủ

Sức mạnh cộng hưởng ở miền Đông Nam Bộ sau chiến thắng Điện Biên Phủ

12:48 07/05/2026

(QK7 Online) - Sau chiến thắng Điện Biên Phủ ngày 7/5/1954 đến khi lệnh ngừng bắn thực sự có hiệu lực trên chiến trường miền Đông Nam Bộ bắt đầu từ ngày 11/8/1954, hào khí thắng lợi từ miền Bắc cùng sức mạnh tại chỗ của quân và dân miền Đông tạo nên một cục diện tấn công toàn diện, đẩy thực dân Pháp vào thế tan rã không thể vực dậy.

Đại tướng Phạm Văn Trà chia sẻ kinh nghiệm bảo vệ Tổ quốc và bảo vệ biên giới

Đại tướng Phạm Văn Trà chia sẻ kinh nghiệm bảo vệ Tổ quốc và bảo vệ biên giới

17:45 04/05/2026

(QK7 Online) - Ngày 4/5, tại thành phố Đồng Nai, Đảng ủy, 123Win99ok Sân chơi uy tín 123Win79 tỷ lệ kèo World Cup 2026 (BĐBP) thành phố tổ chức buổi gặp mặt nghe Đại tướng, Anh hùng LLVT 123Win com 79 nạp - rút nhanh Phạm Văn Trà, nguyên Ủy viên Bộ 99Oke123 Tải ứng dụng, nguyên Phó Bí thư Quân ủy Trung ương, nguyên Bộ trưởng 99Oke123 Bắn Cá, Đá Gà, Nổ hũ, Thể Thao chia sẻ kinh nghiệm về bảo vệ Tổ quốc (BVTQ), giữ vững chủ quyền an ninh biên giới quốc gia nhân kỷ niệm các ngày lễ lớn và tiến tới kỷ niệm 51 năm Ngày Truyền thống BĐBP thành phố Đồng Nai (4/6/1975 - 4/6/2026).

Tuổi trẻ LLVT Quân khu: Tự hào truyền thống, tiếp bước cha anh

Tuổi trẻ LLVT Quân khu: Tự hào truyền thống, tiếp bước cha anh

09:33 30/04/2026

(QK7 Online) - Cuộc Tổng tiến công và nổi dậy mùa Xuân 1975 – đỉnh cao là đại thắng 30/4 lịch sử – đã khắc ghi mốc son chói lọi trong hành trình dựng nước và giữ nước của dân tộc. Âm vang chiến thắng ấy không chỉ là niềm tự hào mà còn là nguồn động lực mạnh mẽ, thôi thúc tuổi trẻ LLVT Quân khu hôm nay không ngừng học tập, rèn luyện, cống hiến. Mỗi cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số, người lao động đang tiếp nối truyền thống cha anh bằng những việc làm thiết thực, góp phần xây dựng đơn vị vững mạnh toàn diện “Mẫu mực, tiêu biểu”, bảo vệ vững chắc Tổ quốc Việt Nam xã hội chủ nghĩa.

Sư đoàn 5 dâng hương tưởng niệm, khắc ghi công lao Chủ tịch Hồ Chí Minh và các anh hùng liệt sĩ

Sư đoàn 5 dâng hương tưởng niệm, khắc ghi công lao Chủ tịch Hồ Chí Minh và các anh hùng liệt sĩ

09:13 30/04/2026

(QK7 Online) – Nhân kỷ niệm 51 năm Ngày giải phóng miền Nam, thống nhất đất nước (30/4/1975 – 30/4/2026), trong không khí thiêng liêng của ngày lịch sử, sáng 30/4, cán bộ, 123Win com 79 casino, cá cược thể thao đến xổ số Sư đoàn 5 đã thành kính tổ chức dâng hoa, dâng hương tưởng niệm Chủ tịch Hồ Chí Minh và các anh hùng liệt sĩ của Sư đoàn; đồng thời viếng Nghĩa trang liệt sĩ Châu Thành, tỉnh Tây Ninh. Dự và chủ trì buổi lễ có Đại tá Huỳnh Việt Lê Kha, Sư đoàn trưởng; Đại tá Trần Hoàng Giang, Bí thư Đảng ủy, Chính ủy Sư đoàn.

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