Last active
March 9, 2024 03:06
-
-
Save duongthanhthai/3346a8f3a80ee16641d1b01b49076999 to your computer and use it in GitHub Desktop.
Fix link zalo not work on mobile click zalo.me/{sđt}
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<script> | |
var zalo_acc = { | |
"0918954358" : "b2n0k5glmued", | |
}; | |
function fixzalo(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); | |
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"); | |
fixzalo( | |
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; | |
} | |
); | |
} | |
}); | |
}); | |
}); | |
var styleElement = document.createElement("style"); | |
var cssCode = ".zalo_loading { pointer-events: none; }"; | |
styleElement.innerHTML = cssCode; | |
document.head.appendChild(styleElement); | |
</script> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment