Code Monkey home page Code Monkey logo

ishare.js's Introduction

iShare.js

npm version Gemnasium Packagist

iShare.js是一个小巧的分享插件,纯JS编写,不依赖任何第三方库,使用简便。

目前国内比较受欢迎的分享插件,都集成了很多常用的分享接口,功能都很丰富。不过个人体验后,总结如下不足(个人观点):

  1. 定制度不高,特别在自定义样式上╮(╯﹏╰)╭。
  2. 没有更新维护,部分接口都是挂掉的。
  3. 提供的大部分接口都是没有用到,而真正用到就那么几个,显得有点冗余。

iShare.js是针对上述问题而诞生的,并为自定义样式的创建方式定制了专门的精简版:iShare_tidy

share

定制二维码样式:

share

安装

npm install zhansingsong-ishare || bower install zhansingsong-ishare

Features

  • 支持UMD模式(AMD,CMD, Globals)
  • 纯js编写,不依赖任何库
  • 多种配置方式
  • 兼容性好
  • 支持常用的分享接口

支持分享接口

  • QQ好友
  • QQ空间
  • 腾讯微博
  • 新浪微博
  • 微信
  • 豆瓣
  • 人人
  • 有道笔记
  • Linkedin
  • Facebook
  • Twitter
  • Google+
  • Pinterest
  • Tumblr

配置项

container: '.iShare1',
config:
	{
		title: 'title',
		description: 'description',
		url: 'url',
        img: 'imgurl'
        description: 'description',
        sites: ['iShare_weibo','iShare_qq','iShare_wechat','iShare_tencent','iShare_douban','iShare_qzone','iShare_renren','iShare_youdaonote','iShare_facebook','iShare_linkedin','iShare_twitter','iShare_googleplus','iShare_tumblr','iShare_pinterest'],
		initialized: true,
		isAbroad: false,
		isTitle: true,
		WXoptions:{
			evenType: 'click',
			isTitleVisibility: true,
			title: '二维码标题',
			isTipVisibility: true,
			tip: '二维码描述文本',
			bgcolor: '#2BAD13',
			qrcodeW: '二维码宽度',
			qrcodeH: '二维码高度',
			qrcodeBgc: '二维码背景色',
			qrcodeFgc: '二维码前景色'
		}
	}
  • container: 分享容器节点,仅支持'class''id'两种选择模式。 'class'模式: '.class'; 'id'模式: '#id'.
  • config:
    • title:分享标题. 默认: document.title
    • url:分享的URL. 默认:location.href
    • description:分享的summarydescription,默认为meta的description
    • image:指定分享图片的src,默认为页面第一图片
    • sites:指定使用那些分享接口
    • initialized:自动创建必须开启字段. isAbroadisTitle才能生效.默认开启
    • isTitle:如果为true,会开启a标签的title属性, 默认是为false
    • isAbroad
      • 默认undefined,开启国外分享接口 + 国内分享接口.
      • 为true时,开启国外分享接口: 'iShare_facebook','iShare_linkedin','iShare_twitter','iShare_googleplus','iShare_tumblr','iShare_pinterest'.
      • 为false时,开启国内分享接口: 'iShare_weibo','iShare_qq','iShare_wechat','iShare_tencent','iShare_douban','iShare_qzone','iShare_renren','iShare_youdaonote'.
    • WXoptions
      • evenType:微信二维码的触发方式,仅支持:'click''mouseover',默认为'mouseover'.
      • isTitleVisibility:是否显示二维码标题,默认为显示,即为true.
      • title:二维码标题.
      • isTipVisibility:是否显示二维码描述信息,默认为显示,即为true.
      • tip:二维码描述文本
      • bgcolor:二维码的背景颜色
      • qrcodeW:二维码宽度, 默认120
      • qrcodeH:二维码高度, 默认120
      • qrcodeBgc:二维码背景色, 默认#fff
      • qrcodeFgc:二维码前景色, 默认#000

使用

支持两种初始化方式:
  • 单例模式
  • 实例化模式

注意:不要同时使用两种模式


如果存在微信分享,需要引入qrcode.min.js文件,并存放在iShare.js|iShare_tidy.js同级目录中。插件会自动加载。

单例模式

本实例展示了自定义样式分享的创建过程。另外本库针对自定义样式的创建提炼出一个精简版本:iShare_tidy版本

// 引入脚本文件
<script type="text/javascript" src="iShare_tidy.js"></script>
// 引入HTML脚本
<div class="iShare iShare1">
	<a href="#" class="iShare_qzone"><i class="iconfont qzone">&#xe610;</i></a>
	<a href="#" class="iShare_tencent"><i class="iconfont tencent" style="vertical-align: -2px;">&#xe608;</i></a>
	<a href="#" class="iShare_weibo"><i class="iconfont weibo">&#xe609;</i></a>
	<a href="#" class="iShare_wechat"><i class="iconfont wechat" style="vertical-align: -2px;">&#xe613;</i></a>
	<a href="#" class="iShare_facebook"><i class="iconfont facebook" style="vertical-align: 1px;">&#xe601;</i></a>
	<a href="#" class="iShare_googleplus"><i class="iconfont googleplus" style="vertical-align: -1px;">&#xe60b;</i></a>
	<a href="#" class="iShare_linkedin"><i class="iconfont linkedin" style="vertical-align: 2px;">&#xe607;</i></a>
	<a href="#">我是酱油一号</a>
	<a href="#">我是酱油二号</a>
</div>
//子元素需要指定如下的类名:
//iShare_qq         : 'QQ好友',
//iShare_qzone      : 'QQ空间',
//iShare_tencent    : '腾讯微博',
//iShare_weibo      : '新浪微博',
//iShare_wechat     : '微信',
//iShare_douban     : '豆瓣',
//iShare_renren			: '人人',
//iShare_youdaonote : '有道笔记',
//iShare_linkedin   : 'Linkedin',
//iShare_facebook   : 'Facebook',
//iShare_twitter    : 'Twitter',
//iShare_googleplus : 'Google+',
//iShare_pinterest	: 'Pinterest',
//iShare_tumblr			: 'Tumblr'
//插件会根据类名自动处理,如果存在不包含上述类名的子元素,该元素就不作任何处理。
// 配置全局变量iShare_config
<script type="text/javascript">
iShare_config = {container:'.iShare1',config:{
		title: '分享标题',
		description: '这是分享描述文本',
		url: 'https://github.com/zhansingsong',
		WXoptions:{
			evenType: 'click',
			isTitleVisibility: true,
			title: '二维码标题',
			isTipVisibility: true,
			tip: '二维码描述文本',
			bgcolor: '#2BAD13',
			qrcodeW: 120,
			qrcodeH: 120,
			qrcodeBgc: #fff,
			qrcodeFgc: #000
		}
	}};
</script>

实例化模式

// 引入样式文件(自定义样式可以不用引入)
<link rel="stylesheet" type="text/css" href="./style/fonts/iconfont.css">
<link rel="stylesheet" type="text/css" href="./style/css/ishare.css">
// 引入脚本文件
<script href="javascript:;" type="text/javascript" src="iShare.js"></script>
// 引入HTML脚本
<div class="iShare iShare-16 iShareClassName"></div> // 容器类名选择器: "iShareClassName"
// 实例化对象
<script type="text/javascript">
	(new iShare({container:'.iShare1',config:{
		title: '分享标题',
		description: '这是分享描述文本',
		url: 'https://github.com/zhansingsong',
		isAbroad: false,
		isTitle: true,
		initialized: true,
		WXoptions:{
			evenType: 'click',
			isTitleVisibility: true,
			title: '二维码标题',
			isTipVisibility: true,
			tip: '二维码描述文本',
			bgcolor: '#2BAD13',
			qrcodeW: 120,
			qrcodeH: 120,
			qrcodeBgc: #fff,
			qrcodeFgc: #000
		}
	}}));
</script>

Changelog

  • 1.1.0:修改二维码的生成接口,现由https://github.com/davidshimjs/qrcodejs库来生成。并增加 qrcodeW,qrcodeH,qrcodeBgc,qrcodeFgc配置项。

更多详情请参考DEMO

License

iShare.js is covered by the MIT License.

ishare.js's People

Contributors

bibichuan avatar zhansingsong avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ishare.js's Issues

getmeta方法有些小小的bug

@zhansingsong 您好!

/** * getmeta 通过name获取对应meta的content值 * @param {String} name meta的name * @return {String} */ getmeta: function(name) { var _metas = document.getElementsByTagName('meta'); for (var i = 0, _item; _item = _metas[i++];) { if (_item.getAttribute('name').toLowerCase() === name) { return _item.content; } } },
这个方法有点小问题,你忽略了一些meta没有name值得情况,比如
<meta charset="utf-8">
一般这个会放在第一行,所以_item.getAttribute('name')null,导致下面的代码直接走不通,建议你加个判断。谢谢!

有两个小问题,引入qrcode.min.js文件+配置项container的'id'模式

引入qrcode.min.js文件,需要在引用页面的同级目录下。不然,二维码无法出现
如,某站首页****/index.html、子页面****/XXX/index.html的同级目录,分别有qrcode.min.js
试了对loadjs函数这样调整后,可以自动加载在iShare.js|iShare_tidy.js同级目录的qrcode.min.js文件
iShare_tidy.js 409行
W3C = document.dispatchEvent, js = document.scripts, path = js[js.length - 1].src; path = path.substring(0, path.lastIndexOf('/')+1); cb.push(callback); if(!ready){ node.setAttribute('type', 'text/javascript'); node.setAttribute('id', 'loaded'); node.setAttribute('src', path+url);
iShare_tidy.min.js
j=document.dispatchEvent后增加
,s=document.scripts,p=s[s.length-1].src;p=p.substring(0,p.lastIndexOf('/')+1)
k.setAttribute("src",h)调整为
k.setAttribute("src",p+h)

配置项container的'id'模式无效,代码_node = document.getElementById(selector); 尝试进行如下调整,去掉#,id模式正常
_node = document.getElementById(selector.slice(1));
min压缩版,f=document.getElementById(e)改成了f=document.getElementById(e.slice(1)),正常

@zhansingsong 请查看

弹出层对齐实现方式有问题

因为只在 mouseover 时对齐了一次,所以如果定位元素发生了重排例如 window resize 之后微信扫码弹出层定位会出错,建议每次 mouseover 是都进行对齐。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.