web浏览器_Web上的分享(Share)API

702a5919b8e6344dec382492ceff9d85.png
我认为Web Share API非常酷,简而言之,它会利用您所使用的平台上的原生共享功能(如果该平台支持的话)。我喜欢这个:
d92744a33e9c97080fc1191aebb98d6e.png
在iOS上激活的Web Share API

远远不止这些东西:

ac0ae738a3087a669221a451101bfd0e.png

为什么?

  • Web Share API只是几行代码。简单!没有图像,没有重量级的JavaScript或iframe。

  • 用户看到的UI是针对其平台定制的,甚至可能是由他们定制的,以在其中包含他们想要的东西。

好样的,Web标准。但并不是所有地方都支持。例如,我在Chrome浏览器中写这篇博客文章,在桌面Chrome浏览器中无法使用,但在桌面的Safari中却可以工作
4396d4b8d4e020bdb4fbf2cf16a46114.png
所以,如果我要使用它,我宁愿在把按钮放在页面上之前先测试一下是否支持。这是非常简单的:
if (navigator.share) {
下面是一个例子,如果API被支持的话,我把一个 放在文章上,HTML和CSS省略。
c371fbade9fa12a8dd5c084241d05688.png
Safari浏览器效果,Chrome不支持
JavaScript做了一些花哨的动作来获取文章的标题和第一段,以便在API中使用。我喜欢Jeremy Keith在页面上的做法:
if (navigator.share) {
你也可以将字符串传递给这些值,这只是在展示你如何在任何页面上动态地做一些工作。Jeremy也一直在倡导建立一个JavaScript可选的Web Share API版本,他认为可以像这样工作。
<button type="share">

然后,指定标题和文本:

<button type="share" value="title,text">
用逗号对我来说有点时髦,如果标题中包含逗号怎么办?那指定URL呢?我们可以将它们全部分成属性吗?我想我知道Jeremy会说什么:这是一个简单的声明性版本,如果你想改变默认行为,那就是JavaScript的作用。

如何使用Web Share API

自从在Android的Chrome 61中首次引入以来,Web Share API似乎已经受到关注。从本质上讲,它提供了一种方法,当直接从网站或Web应用程序分享内容时,可以触发设备(或桌面,如果使用Safari)的本地分享对话框,例如链接或联系卡。虽然用户已经可以通过原生方式分享网页上的内容,但他们必须在浏览器菜单中找到这个选项,即使如此,也无法控制分享的内容。该API的引入让开发者可以利用用户设备上的原生内容分享功能,将分享功能添加到应用或网站中。
0c6151ca73bdda20a58df4fa7a737f7f.png
iOS提供了许多原生共享选项

与传统方法相比,这种方法具有许多优势:

  • 与你在DIY实现中可能拥有的有限数量的内容相比,用户将获得广泛的内容分享选择。
  • 你可以通过删除各个社交平台上的第三方脚本来缩短页面加载时间。
  • 你不需要为不同的社交媒体网站和电子邮件添加一系列按钮,一个按钮就足以触发设备的原生分享选项。
  • 用户可以在自己的设备上定制自己喜欢的分享目标,而不是仅仅局限于预定义的选项。

关于浏览器支持的说明

在介绍API的工作细节之前,我们先把浏览器支持的问题解决掉。说实话,目前浏览器的支持度并不高。它只适用于Android版Chrome浏览器,以及Safari(桌面和iOS)。
143825ad0606cea4bcfa4fb44ba75626.png
这个浏览器支持数据来自Caniuse,它有更详细的数据,数字表示浏览器支持该版本及以上的功能。
但不要因此而不愿意在网站上采用这个API。要实现一个支持不提供支持的浏览器的后备功能是很容易的,你会看到的。

使用它的一些要求

在您自己的Web项目上采用此API之前,需要注意两点:

  • 您的网站必须通过HTTPS提供服务。为了促进本地开发,当您的站点通过localhost运行时,该API也可以使用。

  • 为了防止滥用,API只能在响应一些用户操作(如点击事件)时触发。

这是一个例子

为了演示如何使用这个API,我准备了一个demo,它的工作原理与我的网站上的工作原理基本相同。该示例使用DIY方式,自己自定义分享对话框。
644bfb13208a6145a2087d5b7681aa77.gif
此时,一旦点击分享按钮,就会弹出一个对话框,显示出分享内容的几个选项,这是代码的一部分,可帮助我们实现这一目标:
'click', event => {
让我们继续进行示例转换,以改为使用Web Share API。首先要做的是检查用户的浏览器是否确实支持该API,如下所示:
if (navigator.share) {

使用Web Share API就像调用 navigator.share() 方法并传递一个至少包含以下字段之一的对象一样简单。

  • url:一个字符串,代表要共享的URL。通常是文档的网址,但不是必须的。您可以通过Web Share API共享任何URL。

  • title:表示要共享的标题的字符串,通常是 document.title。

  • text:您要包括的任何文本。

实际情况如下:
'click', event => {
这时,一旦在支持的浏览器中点击分享按钮,原生选取器就会弹出所有用户可以分享数据的可能目标。目标可以是社交媒体应用、电子邮件、即时通讯、短信或其他注册分享目标。API是基于Promise的,所以你可以附加一个 .then()方法,以便在共享成功时显示成功消息,并使用 .catch()处理错误。。在实际情况下,您可能希望使用以下代码段获取页面的标题和URL:
const title = 
对于URL,我们首先检查该页面是否有一个规范的URL,如果有,就使用它。否则,我们从 document.location中抓取 href

提供后备方案是个好主意

在不支持Web Share API的浏览器中,我们需要提供一种后备机制,以便那些浏览器上的用户仍然可以使用一些共享选项。在上面的DIY例中,我们弹出一个对话框,其中有一些用于共享内容的选项,并且演示中的按钮实际上并没有链接到任何地方,因为这是一个演示。但是,如果您想了解如何在不使用第三方脚本的情况下创建自己的链接来共享网页,那么Adam Coti的文章就是一个不错的起点。我们要做的是在不支持Web Share API的浏览器上为用户显示后备对话框。这就像将打开共享对话框的代码移到 else块中一样简单:
'click', event => {
现在,无论使用哪种浏览器,所有用户都将受到覆盖。以下是分享按钮在两个移动浏览器上的表现比较,一个是支持Web Share API,另一个是不支持。
09edd5bf0ea37c0ce7d3cd3425235a67.gif
试试吧!使用支持Web Share的浏览器和不支持的浏览器。它的工作原理应该与上面的演示类似。

结束

这几乎涵盖了您需要了解的有关Web Share API的基本内容。通过在您的网站上实施它,访问者可以在更广泛的社交网络上更容易地与联系人和其他原生应用程序分享您的内容。另外值得注意的是,如果你的Web应用符合WPA Web应用安装标准,你能够将其添加为共享目标,并添加到用户的主屏幕上。Web Share Target API的此功能,您可以在Google Developers上了解。尽管对浏览器的支持不多,但回退很容易实现,因此我认为没有理由不采用这种方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539513.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

exfat单元分配要设置多少_微软宣布,支持往Linux内核里添加exFAT存储了!跨系统存储的福音...

栗子 发自 凹非寺 量子位 报道 | 公众号 QbitAIexFAT&#xff0c;是微软开发的文件系统&#xff0c;为闪存而生。你的U盘、SD卡、手机等等存储设备&#xff0c;能存4G以上的大文件&#xff0c;很大程度上是它的功劳。可exFAT一直是专有的&#xff0c;微软手握多项专利。所以&am…

Jetbrains 系 IDE 编辑器的代码提示功能

著名的 Jetbrains 可谓编程界的一大福音&#xff0c;众多有名代码编辑器比如 ItelliJ IDEA、PHPStorm、WebStorm、PyCharm 等&#xff0c;均出自这家公司麾下。 对于中国的Java开发者来说&#xff0c;可能使用 Eclipse 的人最多。 使用Idea的程序员也不少, 而且每个人都在鼓吹其…

tkmybatis 子查询_真假童子命符箓道长教你如何查询

童子命查询方法一&#xff1a;童子命在相术里&#xff0c;指的是一生都霉运连连如过本命年的人。古代关于真童子命查询有口诀“春秋甲寅子&#xff0c;冬夏卯未辰&#xff1b; 金木乙卯未&#xff0c;水火庚辛壬&#xff1b; 土命逢辰巳&#xff0c;童子定为真”解释上面的口诀…

ECLIPSE配置OSGI服务器

eclipse版本如下&#xff1a; Eclipse Java EE IDE for Web Developers. Version: Mars Release (4.5.0) Build id: 20150621-1200 ------------------------ 1、进入eclipse-----run----run configuration---osgi framework---new 2、取消全选 3、在搜索框中输入 osgi&a…

AD19 add pins to nets错误_为什么我认为Rust的Result错误处理方式不如Exception

由于是对技术的个人评判&#xff0c;欢迎理性讨论。我曾经也当过纯函数式的脑残粉&#xff0c;认为宇宙第一棒的代数数据结构用来处理错误&#xff0c;是无上的优雅和绝对的安全。一个看似人畜无害的接口抛出异常带来的崩溃&#xff0c;是各类疑难杂症的罪魁祸首。综合起来&…

Java @Transient 注解使用

2019独角兽企业重金招聘Python工程师标准>>> 我们建实体类的时候啊&#xff0c;有时候实体类的属性和数据库表字段不一致的时候&#xff0c;比如多一个属性&#xff0c;那你不加这个注解就会报错&#xff0c;因为映射的时候会提示&#xff08;提示啥我给忘了&#x…

oracle—ebs_采购功能点操作手册,oracle—EBS_采购功能点操作手册

erp实施企业采购模块构架及日常业务操作指导“人力资源”页签可以设置是否“使用审批层次结构”来决定采购单据的审批路径。如不选定&#xff0c;则表示采购单据将使用员工的“主管”结构来进行审批。“员工编号”方法默认自业务组定义时的“员工编号生成”方法设置。1.2采购选…

combobox控件 如何把三角形放大_初中数学|全等三角形全部知识点总结

今天&#xff0c;琦老师为大家整理了[初中数学重要考点&#xff0c;全等三角形的全部知识点]&#xff0c;希望帮助大家中考数学快速提分( #小学数学#初中数学#数学)除了图片内容&#xff0c;大米君也为大家分享[如何灵活运用这些知识点的方法]大家记得跟着做起来哦~提高复习效果…

Spring中引入其他配置文件

原文&#xff1a;http://www.cnblogs.com/LiuChunfu/p/5605473.html ------------------------------------------------------------------------------ 一、引入其他 模块XML   在Spring的配置文件&#xff0c;有时候为了分模块的更加清晰的进行相关实体类的配置。 比如…

oracle不要重复记录,Oracle中去重复记录 不用distinct

用distinct关键字只能过滤查询字段中所有记录相同的(记录集相同)&#xff0c;而如果要指定一个字段却没有效果&#xff0c;另外distinct关键字会排序&#xff0c;效率很低 。select distinct name from t1 能消除重复记录&#xff0c;但只能取一个字段&#xff0c;现在要同时取…

miui游戏驱动程序偏好设置_米粉必看:小米官方教你如何关闭 MIUI 广告 - 小米,MIUI...

IT之家 11 月 9 日消息 小米的 MIUI 在用户心中的口碑一直是比较好的&#xff0c;但该系统也并非完美&#xff0c;被吐槽的较多的一个点就是系统内的广告比较多。今天&#xff0c;小米官方微博 小米服务那些事 分享了几个能够减少 MIUI 广告的方法&#xff0c;米粉不妨了解一下…

Spring Cloud Zuul网关 Filter、熔断、重试、高可用的使用方式。

时间过的很快&#xff0c;写springcloud(十)&#xff1a;服务网关zuul初级篇还在半年前&#xff0c;现在已经是2018年了&#xff0c;我们继续探讨Zuul更高级的使用方式。 上篇文章主要介绍了Zuul网关使用模式&#xff0c;以及自动转发机制&#xff0c;但其实Zuul还有更多的应用…

oracle 9 插入日期,oracle date日期类型 精析

一、date1.date、sysdate格式说明展示date类型&#xff0c;展示格式既可以为&#xff1a;YYYY/MM/DD&#xff0c;也可以为YYYY/MM/DD HH24:MI:SS&#xff1b;其存储格式只有一种&#xff1a;YYYY/MM/DD HH24:MI:SS展示格式一&#xff1a;当你只存年月日时&#xff0c;date实际存…

CentOS 7.1下KVM的安装与配置

由于没有物理机可用&#xff0c;在自己的VMware Workation中CentOS 7搭建完成。 首先查看VMware Workation是否支持虚拟化&#xff0c;把红框内打钩即可。 虚拟化开启并安装CentOS系统&#xff0c;建议CentOS安装64bit。我的环境用的是CentOS 7。进入系统&#xff0c;首先查看服…

软件生成问候图片_这些社交软件你玩过几个?

提到聊天软件&#xff0c;我们的手机肯定安装有微信QQ&#xff0c;不过微信QQ都是主打熟人社交&#xff0c;而下面几个软件都是陌生人社交。这些社交软件&#xff0c;总有一款你安装过。注意&#xff0c;非按排名介绍。第一款:陌陌陌陌是一款基于地理位置的开放式移动视频社交应…

Android5.0新控件

谷歌在推出Android5.0的同时推出了一些新控件&#xff0c;Android5.0中最常用的新控件有下面5种。 1. CardView&#xff08;卡片视图&#xff09; CardView顾名思义是卡片视图&#xff0c;它继承FrameLayout。它是一个带圆角的背景和阴影FrameLayout。CardView被包装为一种布局…

Druid使用起步—在javaWeb项目中配置监控

原文章&#xff1a;http://my.oschina.net/u/568779/blog/152813 ---------------------------------------------------- druid wiki 当我们在javaWEB项目中使用到druid来作为我们的连接池的时候&#xff0c;一定不会忘了添加监控功能。下面我们就来看一下&#xff0c;在一个…

ip地址管理系统_门禁监控管理系统项目总结

门禁监控管理系统项目总结1、门禁管理设备(IFACE802) 16台 ,都有独立的网线到控制的房间。IP地址从 192.168.1.101--192.168.1.116。(地下一层 新家的最后一间是在附近的一个房间接的网线。一层的大门 有1台控制器和IFACE802 部署了2根网线)2、门禁控制的IP地址 192.168.1.1173…

平板电脑可以插u盘吗_有手机还需要平板电脑吗 酷比魔方iplay30平板电脑评测

原标题&#xff1a;有手机还需要平板电脑吗 酷比魔方iplay30平板电脑评测一、前言&#xff1a;前段时间我们一帮60岁左右的退休老头、老太太到农家乐去玩&#xff0c;玩累了就开始喝茶&#xff0c;一坐下来&#xff0c;人人都把手机掏出来&#xff0c;看着他们看手机的姿势&…

面向多媒体 linux 版本,基于MX Linux 的 AV Linux 新版发布,此AV非彼AV

原标题&#xff1a;基于MX Linux 的 AV Linux 新版发布&#xff0c;此AV非彼AV作者&#xff1a;Linux迷链接&#xff1a;https://www.linuxmi.com/av-linux-2020-11-23-mx-linux-19-3.html经过六个多月的开发&#xff0c;面向多媒体的AV Linux发行版已发行了新版本&#xff0c;…