移动浏览器(Chrome v64)中navigator.share无法工作

18

我一直在尝试使用navigator.share从Javascript触发Android浏览器中的Intent共享。

以下是示例代码:

$("#printTest").click(function(e){
    if (navigator.share === undefined){
        alert('Undefined!');
    }
    else{
        alert('Sharing!');
        navigator.share({title: 'Example Page', text: 'https://example.com'});
    }
});

当我尝试从Ubuntu的Chrome浏览器点击按钮时,它会打开一个分享窗口(虽然没有显示任何应用程序可供选择)。但在任何Android移动浏览器上都无法工作。我已经在Chrome for Android版本64和Chrome for Android Dev中进行了测试。即使启用了标志chrome://flags/#enable-experimental-web-platform-features,所有这些浏览器都显示警报“未定义”。

1个回答

99

navigator.share 仅能在使用 https 的网站上工作,而无法在 HTTP 上工作。


1
该死,Let's Encrypt 只为 DNS 名称提供证书,不支持 IP 地址... 基本上你必须支付一个域名才能测试这个功能。 - Nicolas Manzini
2
只有在 http://localhost 上才能共享。如果你在移动设备上开发,可以使用端口转发,在手机上使用 localhost 域名,即使本地服务器在 PC 上也可以。 - Dread Boy
@NicolasManzini 如果你想进行本地HTTPS测试,可以使用ngrok - skyllet
1
@NicolasManzini 我绝不会建议普通开发者或公司在未经网络安全人员检查的情况下使用ngrok。这是一个巨大的安全风险,是恶意黑客的众所周知的入口点。 - AhrenFullStop

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接