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,一经查实,立即删除!

相关文章

Oracle视图添加约束,Oracle创建视图的语法

Oracle创建视图的语法导读&#xff1a;就爱阅读网友为大家分享了多篇关于 "oracle 创建序列语法" 资料&#xff0c;内容精辟独到&#xff0c;非常感谢网友的分享&#xff0c;希望从中能找到对您有所帮助的内容。相关资料一 : Oracle 创建视图的语法Oracle 创建视图的…

linux压缩和解压缩命令

tar命令解包&#xff1a;tar zxvf FileName.tar打包&#xff1a;tar czvf FileName.tar DirNamegz命令解压1&#xff1a;gunzip FileName.gz解压2&#xff1a;gzip -d FileName.gz压缩&#xff1a;gzip FileName.tar.gz 和 .tgz解压&#xff1a;tar zxvf FileName.tar.gz压缩&a…

【Java进阶】Java Lambda 表达式、Stream API完整梳理

一、Lambda表达式 Lambda 表达式是一种匿名函数&#xff0c;它可以用来定义函数式接口的实现。Lambda 表达式可以用来简化代码&#xff0c;提高代码的可读性和可维护性。 1、Lambda 表达式 1.1、语法介绍 Lambda 表达式的语法如下&#xff1a; (parameters) -> express…

使用T-SQL语句操作数据表-删除数据

1.使用 delete 语句删除表中的数据&#xff1a;语法&#xff1a;delete from <表名> [where <删除条件>]delete 是删除的意思 where是选填内容可以不加&#xff0c;但是不加条件的话是删除整个表 例子&#xff1a;delete from 成绩表 where 姓名张三含义&#xff1…

Oracle expdp/impdp导出导入命令及数据库备份

经常报错&#xff1a; ORA-39002: invalid operation ORA-39070: Unable to open the log file. ORA-29283: invalid file operation ORA-06512: at "SYS.UTL_FILE", line 536 ORA-29283: invalid file operation 解决方法&#xff1a; 1、 CREATE OR REPLACE DI…

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

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

在linux中安装oracle中文包,在Linux命令行下安装Oracle 10g

Oracle 10g支持在命令行下用静默模式(Silent)安装&#xff0c;给那些没有安装图形界面的Linux系统提供了极大的便利。下面以Fedora Core 6为例&#xff0c;介绍在命令行下安装OracleOracle 10g的方法。1 安装前的准备准备工作要用登录为root用户来进行。1.1 选择安装环境的语言…

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

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

Oracle下的Databse,Instance,Schemas

1、DATABASE&#xff0c;对oracle而言&#xff0c;是指物理上的数据库&#xff0c;一般你安装了一个oracle的数据库软件后&#xff0c;就是一个database。 2、instance&#xff0c;在同一个数据库上&#xff0c;可以建立多个实例&#xff0c;这些实例互相不干扰&#xff0c;每个…

oracle实验数据库和表,1oracle创建数据库和表.doc

1oracle创建数据库和表.doc实验一&#xff1a;创建数据库和表一、实验目的1. 掌握使用DBCA创建数据库2. 掌握手工创建Oracle数据库的方法3. 掌握创建数据表的方法二、实验内容及步骤1. 使用DBCA创建数据库(1) 打开DBCA组件,创建数据库sale.(2) 安装完后进入D:\oracle\product\1…

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

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

使用 nvm 安装 nodejs 和 npm

使用 nvm 可以方便的进行 nodejs 的安装和版本管理。其实最开始使用的是 n 命令&#xff0c;命令简洁到极致了&#xff0c;无奈总是安装不成功&#xff0c;往往下载一部分就报 curl 错误。然后又找到这个 nvm&#xff0c;配合淘宝源&#xff0c;简单快捷&#xff5e; 1.到 nvm …

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…

oracle ebs r12财务月结基础讲座20090823,095921_OracleEBSR12财务月结基础讲座20090823课件.ppt...

095921_OracleEBSR12财务月结基础讲座20090823课件2009年8月23日方亚兵、巩学伟;1、月结概述 1.1)月结与对帐 1.2)子模块与总帐之间的关系 1.3)关帐顺序2、各模块详细结帐流程及对帐 2.1)应付 2.2)采购 2.3)库存 2.4)应收 2.5)资产 2.6)PAC 2.7)总帐3、应收模块业务规则介绍4、…

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

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

Java @Transient 注解使用

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

Myeclipse/eclipse 安装查看class文件的插件

从http://www.oschina.net/project/tag/317/decompiler?lang19&os0&sortview 中下载了 也可到我的网盘&#xff1a;http://pan.baidu.com/s/1eS5BMcM 下载 Java反编译工具jad &#xff08;jad.exe&#xff09;和 Java反编译插件 Jadclipse &#xff08;net.sf.jadcl…

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

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

Https的前世今生

1、年前会议 马上要过年了&#xff0c;公司业务上的需求也少了很多&#xff0c;这不&#xff0c;王小二他们召开了一场技术会议&#xff0c;盘点年前能干点啥。 只见C哥写了一份清单&#xff0c;其中一项是全站升级https。 C哥说&#xff1a;https是一种趋势&#xff0c;但目前…

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

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