[英]How to prevent Facebook in app browser from opening my website links?
我正在开发Web应用程序,并使用Facebook分享我的内容,我面临的问题是,当有人单击Facebook上发布的链接时,有时它会在应用程序浏览器中使用Facebook打开,这会引起很多问题。
有没有一种方法可以防止Facebook访问我的链接并改用设备默认浏览器?
我无法让我的js动态网格在Facebook应用程序内浏览器中运行,但是我不能仅仅让用户自己找出问题所在,以及他们需要在真实的浏览器中打开它们。
我使用js来检测Facebook应用程序内浏览器,并尝试使用js警报来通知用户他们需要“在野生动物园中打开”,但是警报无法与Facebook应用程序内浏览器一致或可靠地工作。
我发现重定向到用户警报页面是最可靠的解决方案。 可以根据需要显示它(模态等)。其中包含用于重定向的代码示例。 请注意,重定向页面保留在Facebook浏览器中-只有用户互动才能中断。 我使用重定向页面告诉人们使用“共享>在Safari中打开”功能。
当用户单击“在safari中打开”时,重定向页面会在safari中重新加载,检测到它现在不在Facebook应用内浏览器中,然后自动将用户重定向到他们想要的页面,但没有从Facebook应用内浏览器中删除的时间更长。 一种“一键式”解决方法,可以使用户脱离该应用内浏览器。
最好的解决方案仍然是让我的js网格有一天在Facebook浏览器中“正常工作”。 如果有人知道了,让我知道。
<!-- check if running in facebook app -->
<script>
var ua = navigator.userAgent || navigator.vendor || window.opera;
function isFacebookApp() {
return (ua.indexOf("FBAN") > -1) && (ua.indexOf("FBAV") > -1);
}
if (isFacebookApp()) {
window.parent.location.assign("https://yourdomain.com/redirect_page/index.html");
}
</script>
它完全由用户决定,没有办法强制在默认浏览器中打开它。 此线程中有更多信息(和一些答案): 文件上载控件在Facebook应用程序内浏览器中不起作用
或...不那么复杂。 为什么根本没有一个叫做isFacebookApp()的函数?为什么只在查找FB应用程序内浏览器时才将Opera作为目标?
<script>
var ua = navigator.userAgent;
if (ua.indexOf("FBAN") != -1 || ua.indexOf("FBAV") != -1) {
if (!window.location.href.match('redirect_fb')) {
window.location.href = "https://example.com/redirect_fb";
}
}
</script>
谢谢你们俩。 这让我发疯。 我的主要问题是在Android上放大字体。 现在,我发现使用fontsz = Math.round(fontsz * .7)进行还原非常适合抵消(检测到FB应用程序时)
基于Mcbeese
<!-- check if running in facebook app -->
<script>
var ua = navigator.userAgent || navigator.vendor || window.opera;
function isFacebookApp() {
return (ua.indexOf("FBAN") > -1) || (ua.indexOf("FBAV") > -1);
}
if (isFacebookApp()) {
if (!window.location.href.match('redirect_fb')) {
window.location.href = "https://example.com/redirect_fb";
}
}
</script>
我发现,无论发布哪种网址,Android都会通过外部浏览器打开Firebase动态链接 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.