关于web-api:Web上的分享ShareAPI
我认为Web Share API十分酷,简而言之,它会利用您所应用的平台上的原生共享性能(如果该平台反对的话)。 我喜爱这个: 远远不止这些货色: 为什么? Web Share API只是几行代码。简略!没有图像,没有重量级的JavaScript或iframe。用户看到的UI是针对其平台定制的,甚至可能是由他们定制的,以在其中蕴含他们想要的货色。好样的,Web规范。 但并不是所有中央都反对。例如,我在Chrome浏览器中写这篇博客文章,在桌面Chrome浏览器中无奈应用,但在桌面的Safari中却能够工作 所以,如果我要应用它,我宁愿在把按钮放在页面上之前先测试一下是否反对。这是非常简单的: if (navigator.share) {}上面是一个例子,如果API被反对的话,我把一个 <button> 放在文章上,HTML和CSS省略。 JavaScript做了一些花哨的动作来获取文章的题目和第一段,以便在API中应用。我喜爱Jeremy Keith在页面上的做法: if (navigator.share) { navigator.share( { title: document.querySelector('title').textContent, text: document.querySelector('meta[name="description"]').getAttribute('content'), url: document.querySelector('link[rel="canonical"]').getAttribute('href') } );}你也能够将字符串传递给这些值,这只是在展现你如何在任何页面上动静地做一些工作。 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的引入让开发者能够利用用户设施上的原生内容分享性能,将分享性能增加到利用或网站中。 与传统办法相比,这种办法具备许多劣势: 与你在DIY实现中可能领有的无限数量的内容相比,用户将取得宽泛的内容分享抉择。你能够通过删除各个社交平台上的第三方脚本来缩短页面加载工夫。你不须要为不同的社交媒体网站和电子邮件增加一系列按钮,一个按钮就足以触发设施的原生分享选项。用户能够在本人的设施上定制本人喜爱的分享指标,而不是仅仅局限于预约义的选项。对于浏览器反对的阐明在介绍API的工作细节之前,咱们先把浏览器反对的问题解决掉。说实话,目前浏览器的反对度并不高。它只实用于Android版Chrome浏览器,以及Safari(桌面和iOS)。 但不要因而而不违心在网站上采纳这个API。要实现一个反对不提供反对的浏览器的后备性能是很容易的,你会看到的。 应用它的一些要求在您本人的Web我的项目上采纳此API之前,须要留神两点: 您的网站必须通过HTTPS提供服务。为了促成本地开发,当您的站点通过localhost运行时,该API也能够应用。为了避免滥用,API只能在响应一些用户操作(如点击事件)时触发。这是一个例子为了演示如何应用这个API,我筹备了一个demo,它的工作原理与我的网站上的工作原理基本相同。该示例应用DIY形式,本人自定义分享对话框。 此时,一旦点击分享按钮,就会弹出一个对话框,显示出分享内容的几个选项,这是代码的一部分,可帮忙咱们实现这一指标: shareButton.addEventListener('click', event => { shareDialog.classList.add('is-open');});让咱们持续进行示例转换,以改为应用Web Share API。首先要做的是检查用户的浏览器是否的确反对该API,如下所示: if (navigator.share) { // Web Share API is supported} else { // Fallback}应用Web Share API就像调用 navigator.share() 办法并传递一个至多蕴含以下字段之一的对象一样简略。 ...