js页面文字选中后分享到新浪微博实现

时间:2011-03-17 12:55:00 

一、功能简述

正是微博如火如荼的时节,其中各个微博的分享功能是网站推广产品的好东东啊,此时如何方便快捷的使用微博的分享功能就显得比较重要了。我的站点每篇文章的底部有一些分享的链接:

不过我觉得这些分享基本上就是聋子的耳朵——摆设。除非这篇文章惊天地、泣鬼神,痛彻心扉,穿越前世今生。但是,如果有更加方便快捷的分享方式,这种冷淡得让人结冰的场面或许就不会经常出现。

一般翻译软件都有划词翻译功能,例如有道桌面词典的桌面划词翻译功能:

启用后,随便选中那个软件的一段文字,就会出现类似这样子的浮动提示框:

在web页面上,我们也是可以实现类似的效果的:划词→显示提示→分享。这就是本文要展示的内容。

二、效果与demo

demo
您可以狠狠地点击这里:js文字选中分享到新浪微博demo

demo页面的文字是我点兵点将随机找的篇博客内容,纯粹示例。随便选择一段文字,结果就会出现个新浪的怪眼睛logo,如下图:

然后,点击那个晃啊晃的猥琐的眼睛,就实现了选中文字分享到新浪微博的功能啦——会打开个新页面——如下效果:

是不是分享起来很简单很方便啊!

其实呢,本篇文章所在的页面本身就是个demo,你使用鼠标选中一段文字看看,哦呵呵,是不是有反应啊,不要犹豫,果断分享吧。

三、方法与代码

选中即分享的功能看上去比较高级,其实实现是相当简单的。其中的会让人头大,一般人也不感兴趣的原理这里就直接跳过。这个js文字选中后分享到新浪微博的功能我简单的封装了下,方法名是:$sinaMiniBlogShare,当然,您不喜欢可以换掉,甚至不要,此方法完整代码如下:


JavaScript代码

  1. var $sinaMiniBlogShare = function(eleShare, eleContainer) {   

  2.     var eleTitle = document.getElementsByTagName("title")[0];   

  3.     eleContainer = eleContainer || document;   

  4.     var funGetSelectTxt = function() {   

  5.         var txt = "";   

  6.         if(document.selection) {   

  7.             txt = document.selection.createRange().text;    // IE   

  8.         } else {   

  9.             txt = document.getSelection();   

  10.         }   

  11.         return txt.toString();   

  12.     };   

  13.     eleContainer.onmouseup = function(e) {   

  14.         e = e || window.event;   

  15.         var txt = funGetSelectTxt(), sh = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;   

  16.         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;   

  17.         if (txt) {   

  18.             eleShare.style.display = "inline";   

  19.             eleShare.style.left = left + "px";   

  20.             eleShare.style.top = top + "px";   

  21.         } else {   

  22.             eleShare.style.display = "none";   

  23.         }   

  24.     };   

  25.     eleShare.onclick = function() {   

  26.         var txt = funGetSelectTxt(), title = (eleTitle && eleTitle.innerHTML)? eleTitle.innerHTML : "未命名页面";   

  27.         if (txt) {   

  28.             window.open('http://v.t.sina.com.cn/share/share.php?title=' + txt + '→来自页面"' + title + '"的文字片段&url=' + window.location.href);   

  29.         }   

  30.     };   

  31. };   

可以看到$sinaMiniBlogShare方法有两个参数,eleShare和eleContainer,其中,前一个参数是必须的,指的是文字选中后出现的浮动层元素(在本文demo中就是新浪眼睛图标);后面一个参数指文字选择的容器元素,可选参数,如果不设置则指document元素,也就是整个页面文字选中都会触发分享的功能。

假设新浪微博分享图标的HTML如下:


JavaScript代码

  1. <img id="imgSinaShare" class="img_sina_share" title="将选中内容分享到新浪微博" src="https://img.aspxhome.com/file/UploadPic/20113/17/share-83.gif" />  

则直接:


JavaScript代码

  1. $sinaMiniBlogShare(document.getElementById("imgSinaShare"));  

 

就实现了选中文字分享到新浪微博的功能了。

这里的方法没有兼容性问题,IE之流,firefox或是chrome浏览器可以轻松分享;另外,方法原生的javascript代码,不依赖于任何库,所以,只要浏览器不禁用javascript,哪里都可以使用,真可谓方便快捷,无孔不入,网页开发,必备良药。

四、结语及补充

其实呢,此方法不仅支持新浪微博,支持企鹅微博(腾讯微博),狐狸微博(搜狐微博),也是可以的,只要根据各个微博分享页面的API地址,将window.open()中的地址换换就可以了,我想,应该很简单的。您要是有兴致,可以把这些乱七八糟的分享都集合到一个方法中,做出插件性质的,各个网站任意分享,通过参数接口灵活控制,估计会流行的。不过我个人不太喜欢选中一段文字后面跟着个浮动的跟屁虫,尤其是大大的跟屁虫,看着眼烦,无兴趣,所以,我是不会去整一个分享集合的插件的。

时间仓促,技术有限,文中出现表述不准确的地方在所难免,欢迎指正。

标签:微博,分享,js
0
投稿

猜你喜欢

  • Pytorch中的广播机制详解(Broadcast)

    2022-11-17 05:22:51
  • Python使用Beautiful Soup(BS4)库解析HTML和XML

    2023-01-04 18:11:43
  • xWin之JS版

    2009-09-12 18:45:00
  • 实现页面中按钮刷新的N种方法

    2007-02-03 11:06:00
  • python与字符编码问题

    2022-09-02 01:08:45
  • Oracle 存储过程总结(一、基本应用)

    2024-01-24 22:25:53
  • 如何使用python生成大量数据写入es数据库并查询操作

    2024-01-22 18:00:55
  • python 与服务器的共享文件夹交互方法

    2021-02-10 14:29:02
  • python如何将一个四位数反向输出

    2023-03-21 16:42:40
  • 深入解析PHP 5.3.x 的strtotime() 时区设定 警告信息修复

    2023-11-06 19:25:27
  • CKeditor富文本编辑器使用技巧之添加自定义插件的方法

    2024-04-18 09:52:24
  • pyx文件 生成pyd 文件用于 cython调用的实现

    2022-09-17 13:54:32
  • Python实现自动发消息自定义内容的操作代码

    2023-10-17 18:01:53
  • mysql 5.7.17 安装配置方法图文教程

    2024-01-16 18:16:20
  • Python的shutil模块中文件的复制操作函数详解

    2023-04-13 16:59:22
  • tensorflow学习笔记之tfrecord文件的生成与读取

    2021-05-24 13:12:43
  • Go语言中的指针运算实例分析

    2024-05-08 10:45:52
  • Vue从TodoList中学父子组件通信

    2024-05-29 22:22:20
  • python字典基本操作实例分析

    2023-12-04 09:25:22
  • 一篇文章带你深入了解Mysql触发器

    2024-01-14 15:42:35
  • asp之家 网络编程 m.aspxhome.com