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.pswp.cn/news/539513.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/539513.shtml
英文地址,請注明出處:http://en.pswp.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;大米君也為大家分享[如何靈活運用這些知識點的方法]大家記得跟著做起來哦~提高復習效果…