Tính tới nay (28.10.2023) cũng đã gần nửa năm rồi mà không hiểu vì sao zalo chưa fix vấn đề lỗi khi truy cập vào link zalo.me/{sđt}. Gây ảnh hưởng rất nghiêm trọng tới lượng khách hàng của các website có gán link này trên web. Khách ấn vào chat zalo nhưng không thể chat được thế là khách out luôn => mất khách
Sau nhiều nguồn tham khảo và tìm hiểu, test các kiểu thì mình đúc kết lại được đoạn mã dưới đây. Sẽ giúp bạn sửa được lỗi link chat zalo.me trong thời gian chờ zalo fix nhé
Hướng giải quyết:
- Tận dụng mã qr code của zalo
- Truy cập trực tiếp tới zalo app qua Deep link chứ không thông qua web zalo nữa
Ưu điểm của code này:
- Tương thích với mọi button/link zale.me/{sđt} trên website đang có
- Không cần sửa lại code của button/link zalo đang có của website
- 1 hay nhiều sđt zalo trên website đều được
- Không cần tạo trang trung gian
- Hỗ trợ iOs, android, pc và trình duyệt nếu pc chưa cài phần mềm zalo
Trước khi vào code:
suy nghĩ 1 chút nếu để code sửa lỗi zalo mà phải viết lại button call action hay những nhưng link chat zalo có sẵn trong các bài viết… thì hơi bất cập. Nên mình đã nghĩ cách để code tương thích với mọi kiểu button/link đang có của bất kỳ website nào. Chỉ cần button/link đó có dạng zalo.me/{sđt} là đều dùng được mà không cần thay/thêm/sửa code đang có trên website
Code sửa lỗi link zalo.me/{sđt}
Chú ý là bạn không cần sửa gì ở button/link chat zalo của mình cả. Cứ để nguyên như cũ dạng zalo.me/{sđt} nhé
Code này cần thay lại sđt và mã qr code cho đúng. Có thể thêm 01 hoặc nhiều số zalo tuỳ vào web của bạn nha
Cách lấy mã qrcode xem video cuối bài nha
Code:
—————
/*
* Code sửa lỗi link zalo.me/{sđt}
*/
var zalo_acc = {
“sdtzalo1” : “mã qr code 1”,
“sdtzalo2” : “mã qr code 2”,
};
function devvnCheckLinkAvailability(link, successCallback, errorCallback) {
var hiddenIframe = document.querySelector(“#hiddenIframe”);
if (!hiddenIframe) {
hiddenIframe = document.createElement(“iframe”);
hiddenIframe.id = “hiddenIframe”;
hiddenIframe.style.display = “none”;
document.body.appendChild(hiddenIframe);
}
var timeout = setTimeout(function () {
errorCallback(“Link is not supported.”);
window.removeEventListener(“blur”, handleBlur);
}, 2500); // Đặt timeout (2.5 giây) để kiểm tra liên kết. Thay đổi số này lên 5000 nếu bạn chưa chạy được
var result = {};
function handleMouseMove(event) {
if (!result.x) {
result = {
x: event.clientX,
y: event.clientY,
};
}
}
function handleBlur() {
clearTimeout(timeout);
window.addEventListener(“mousemove”, handleMouseMove);
}
window.addEventListener(“blur”, handleBlur);
window.addEventListener(
“focus”,
function onFocus() {
setTimeout(function () {
if (document.hasFocus()) {
successCallback(function (pos) {
if (!pos.x) {
return true;
}
var screenWidth =
window.innerWidth ||
document.documentElement.clientWidth ||
document.body.clientWidth;
var alertWidth = 300;
var alertHeight = 100;
var isXInRange =
pos.x – 100 < 0.5 * (screenWidth + alertWidth) && pos.x + 100 > 0.5 * (screenWidth + alertWidth);
var isYInRange =
pos.y – 40 < alertHeight && pos.y + 40 > alertHeight;
return isXInRange && isYInRange
? “Link can be opened.”
: “Link is not supported.”;
}(result));
} else {
successCallback(“Link can be opened.”);
}
window.removeEventListener(“focus”, onFocus);
window.removeEventListener(“blur”, handleBlur);
window.removeEventListener(“mousemove”, handleMouseMove);
}, 500);
},
{ once: true }
);
hiddenIframe.contentWindow.location.href = link;
}
Object.keys(zalo_acc).map(function(sdt, index) {
let qrcode = zalo_acc[sdt];
const zaloLinks = document.querySelectorAll(‘a[href*=”zalo.me/’+sdt+'”]’);
zaloLinks.forEach((zalo) => {
zalo.addEventListener(“click”, (event) => {
event.preventDefault();
const userAgent = navigator.userAgent.toLowerCase();
const isIOS = /iphone|ipad|ipod/.test(userAgent);
const isAndroid = /android/.test(userAgent);
let redirectURL = null;
if (isIOS) {
redirectURL = ‘zalo://qr/p/’+qrcode;
window.location.href = redirectURL;
} else if (isAndroid) {
redirectURL = ‘zalo://zaloapp.com/qr/p/’+qrcode;
window.location.href = redirectURL;
} else {
redirectURL = ‘zalo://conversation?phone=’+sdt;
zalo.classList.add(“zalo_loading”);
devvnCheckLinkAvailability(
redirectURL,
function (result) {
zalo.classList.remove(“zalo_loading”);
},
function (error) {
zalo.classList.remove(“zalo_loading”);
redirectURL = ‘https://chat.zalo.me/?phone=’+sdt;
window.location.href = redirectURL;
}
);
}
});
});
});
//Thêm css vào site để lúc ấn trên pc trong lúc chờ check chuyển hướng sẽ không ấn vào thẻ a đó được nữa
var styleElement = document.createElement(“style”);
var cssCode = “.zalo_loading { pointer-events: none; }”;
styleElement.innerHTML = cssCode;
document.head.appendChild(styleElement);
Hướng dẫn lấy mã Qr code của zalo
Vào zalo > icon Quét mã qr góc trên bên phải > mã Qr của tôi > tải xuống. Sau đó dùng trình quét mã qr hoặc camera của máy điện thoại để lấy link qr code > lấy mã.
Vừa rồi là cách sửa lỗi giới hạn truy cập zalo trên website, nếu các bạn có thắc mắc gì hãy liên hệ 0387187000 nhé