js實(shí)現(xiàn)選中頁(yè)面文字將其分享到新浪微博
一、功能簡(jiǎn)述
正是微博如火如荼的時(shí)節(jié),其中各個(gè)微博的分享功能是網(wǎng)站推廣產(chǎn)品的好東東啊,此時(shí)如何方便快捷的使用微博的分享功能就顯得比較重要了。我的站點(diǎn)每篇文章的底部有一些分享的鏈接:
不過我覺得這些分享基本上就是聾子的耳朵——擺設(shè)。除非這篇文章驚天地、泣鬼神,痛徹心扉,穿越前世今生。但是,如果有更加方便快捷的分享方式,這種冷淡得讓人結(jié)冰的場(chǎng)面或許就不會(huì)經(jīng)常出現(xiàn)。
一般翻譯軟件都有劃詞翻譯功能,例如有道桌面詞典的桌面劃詞翻譯功能:
啟用后,隨便選中那個(gè)軟件的一段文字,就會(huì)出現(xiàn)類似這樣子的浮動(dòng)提示框:
在web頁(yè)面上,我們也是可以實(shí)現(xiàn)類似的效果的:劃詞→顯示提示→分享。這就是本文要展示的內(nèi)容。
二、效果與demo
demo頁(yè)面的文字是我點(diǎn)兵點(diǎn)將隨機(jī)找的篇博客內(nèi)容,純粹示例。隨便選擇一段文字,結(jié)果就會(huì)出現(xiàn)個(gè)新浪的怪眼睛logo,如下圖:
然后,點(diǎn)擊那個(gè)晃啊晃的猥瑣的眼睛,就實(shí)現(xiàn)了選中文字分享到新浪微博的功能啦——會(huì)打開個(gè)新頁(yè)面——如下效果:
是不是分享起來很簡(jiǎn)單很方便??!
三、方法與代碼
選中即分享的功能看上去比較高級(jí),其實(shí)實(shí)現(xiàn)是相當(dāng)簡(jiǎn)單的。其中的會(huì)讓人頭大,一般人也不感興趣的原理這里就直接跳過。這個(gè)js文字選中后分享到新浪 微博的功能我簡(jiǎn)單的封裝了下,方法名是:$sinaMiniBlogShare,當(dāng)然,您不喜歡可以換掉,甚至不要,此方法完整代碼如下:
var $sinaMiniBlogShare = function(eleShare, eleContainer) { var eleTitle = document.getElementsByTagName("title")[0]; eleContainer = eleContainer || document; var funGetSelectTxt = function() { var txt = ""; if(document.selection) { txt = document.selection.createRange().text; // IE } else { txt = document.getSelection(); } return txt.toString(); }; eleContainer.onmouseup = function(e) { e = e || window.event; var txt = funGetSelectTxt(), sh = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; var left = (e.clientX - 40 < 0) ? e.clientX + 20 : e.clientX - 40, top = (e.clientY - 40 < 0) ? e.clientY + sh + 20 : e.clientY + sh - 40; if (txt) { eleShare.style.display = "inline"; eleShare.style.left = left + "px"; eleShare.style.top = top + "px"; } else { eleShare.style.display = "none"; } }; eleShare.onclick = function() { var txt = funGetSelectTxt(), title = (eleTitle && eleTitle.innerHTML)? eleTitle.innerHTML : "未命名頁(yè)面"; if (txt) { window.open('http://v.t.sina.com.cn/share/share.php?title=' + txt + '→來自頁(yè)面"' + title + '"的文字片段&url=' + window.location.href); } }; };
可以看到$sinaMiniBlogShare方法有兩個(gè)參數(shù),eleShare和eleContainer,其中,前一個(gè)參數(shù)是必須的,指的是文 字選中后出現(xiàn)的浮動(dòng)層元素(在本文demo中就是新浪眼睛圖標(biāo));后面一個(gè)參數(shù)指文字選擇的容器元素,可選參數(shù),如果不設(shè)置則指document元素,也 就是整個(gè)頁(yè)面文字選中都會(huì)觸發(fā)分享的功能。
假設(shè)新浪微博分享圖標(biāo)的HTML如下:
<img id="imgSinaShare" class="img_sina_share" title="將選中內(nèi)容分享到新浪微博" src="http://simg.sinajs.cn/blog7style/images/common/share.gif" />
則直接:
$sinaMiniBlogShare(document.getElementById("imgSinaShare"));
就實(shí)現(xiàn)了選中文字分享到新浪微博的功能了。
這里的方法沒有兼容性問題,IE之流,firefox或是chrome瀏覽器可以輕松分享;另外,方法原生的javascript代碼,不依賴于任何庫(kù),所以,只要瀏覽器不禁用javascript,哪里都可以使用,真可謂方便快捷,無孔不入,網(wǎng)頁(yè)開發(fā),必備良藥。
其實(shí),此方法不僅支持新浪微博,支持企鵝微博(騰訊微博),狐貍微博(搜狐微博),也是可以的,只要根據(jù)各個(gè)微博分享頁(yè)面的API地址,將window.open()中的地址換換就ok了。
以上就是js實(shí)現(xiàn)選中頁(yè)面文字將其分享到新浪微博的方法,時(shí)間倉(cāng)促,技術(shù)有限,歡迎多多指正,大家共同進(jìn)步。
相關(guān)文章
Java遍歷集合方法分析(實(shí)現(xiàn)原理、算法性能、適用場(chǎng)合)
這篇文章主要介紹了Java遍歷集合方法分析(實(shí)現(xiàn)原理、算法性能、適用場(chǎng)合)的相關(guān)資料,需要的朋友可以參考下2016-04-04微信小程序緩存過期時(shí)間的相關(guān)設(shè)置(推薦)
這篇文章主要介紹了微信小程序緩存過期時(shí)間的相關(guān)知識(shí),主要包括微信小程序緩存機(jī)制介紹及哪些是一定需要過期的緩存,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-07-07javascript中使用class和prototype的區(qū)別小結(jié)
本文將介紹在JavaScript何時(shí)使用class以及何時(shí)使用prototype,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08原生js實(shí)現(xiàn)手風(fēng)琴功能(支持橫縱向調(diào)用)
本文主要介紹了原生js實(shí)現(xiàn)手風(fēng)琴功能(支持橫縱向調(diào)用)的示例代碼。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01JavaScript實(shí)現(xiàn)頁(yè)面定時(shí)刷新(定時(shí)器,meta)
很多朋友看到定時(shí),很容易想到用js定時(shí)器,還有盆友用meta來設(shè)置,下面小編給大家介紹js實(shí)現(xiàn)頁(yè)面定時(shí)刷新的方法,一起看看吧2016-10-10JavaScript鼠標(biāo)禁止右鍵禁止打開控制臺(tái)及鍵盤禁用
這篇文章主要給大家介紹了關(guān)于JavaScript鼠標(biāo)禁止右鍵禁止打開控制臺(tái)及鍵盤禁用的相關(guān)資料,實(shí)現(xiàn)禁止右鍵和禁止打開控制臺(tái)是一種常見的網(wǎng)頁(yè)保護(hù)技巧,可以防止非法復(fù)制、盜取網(wǎng)頁(yè)資源等安全問題,需要的朋友可以參考下2023-10-10javascript中DOM復(fù)選框選擇用法實(shí)例
這篇文章主要介紹了javascript中DOM復(fù)選框選擇用法,實(shí)例分析了javascript操作復(fù)選框?qū)崿F(xiàn)全選與反選的相關(guān)技巧,需要的朋友可以參考下2015-05-05