文件上传控件在Facebook应用程序内浏览器中不起作用

Ale*_*x24 13 facebook file-upload

我有一个移动html Facebook应用程序,它具有上传文件的控件(一个简单的输入文件).当我在像这个apps.facebook.com/myapp这样的浏览器中打开应用程序时,我可以正常上传.但是,一旦我浏览本地Facebook应用程序并在新FB的内部浏览器中加载我的应用程序,上传控件就不起作用了.它在页面上但没有做任何事情.

  • 这是预期的行为吗?
  • 如果是这样,我该如何解决它?
  • 我可以强制在Chrome等外部浏览器中打开应用吗?

谢谢.

sri*_*cks 6

我们通过在input元素上添加"Multiple"属性来解决此问题.它似乎是Facebook浏览器中的一个错误.

这修复了它的iOS,但我们已经有一些报告称它仍然无法在Android中运行.它还添加了一个检查,以查看它们是否上传了多个文件(因为这可能不是预期的,但元素允许).我希望它有所帮助.

if (navigator.userAgent.match(/FB/)) {
    $('#myinput').attr('multiple',true);
    $('#myinput').change(function(){
        if ($('#myinput')[0].files.length > 1) {
            //user trying to upload more than 1
            $('#myinput').value = '';
            alert("Sorry, only 1 file is allowed");
        }
    });
}
Run Code Online (Sandbox Code Playgroud)


小智 5

? 也面临同样的问题,由于接受属性,facebook 和 instagram 应用程序内浏览器的文件上传元素都有问题。奇怪的是,在 iOS 中没有问题,但在所有 android 中,输入类型文件都不会在触摸时打开。所以像上面一样,我还添加了 Instagram 的条件。所以在准备好文件时:

var isFacebookApp = function () {
   var ua = navigator.userAgent || navigator.vendor || window.opera;
   return (ua.indexOf("FBAN") > -1) || (ua.indexOf("FBAV") > -1 ) || (ua.indexOf("Instagram") > -1);
};

if (isFacebookApp()) {
    jQuery('#myinputfile').removeAttr('accept');
}
Run Code Online (Sandbox Code Playgroud)


小智 3

同样的问题。

我目前找到的唯一解决方案是通过警告消息建议访问者在 Safari(当然适用于 iPhone)中打开网站,操作按钮位于 facebook 网络浏览器的右上角。

这是一个特定的用户代理:

Mozilla/5.0(iPhone;CPU iPhone OS 8_1_1,如 Mac OS X)AppleWebKit/600.1.4(KHTML,如 Gecko)Mobile/12B435 [FBAN/FBIOS;FBAV/18.0.0.14.11;FBBV/5262967;FBDV/iPhone5, 2;FBMD/iPhone;FBSN/iPhone 操作系统;FBSV/8.1.1;FBSS/2; FBCR/T-Mobile;FBID/电话;FBLC/en_US;FBOP/5]