微博分享按钮
三年前往博客里添加了一个微博分享按钮,最近发现微博分享方式有WBML新版了,于是按照微博介绍的WBML界面重写了这段代码。
先贴代码。新版的添加微博分享按钮的方法:编辑正在使用的monochrome族主题(其它主题可能要微调)的header.php,做两个改动:
一、在<html>标签后增加wb命名空间:
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wb="http://open.weibo.com/wb">
二、在</head>之前加入以下代码:
<script src="http://tjs.sjs.sinajs.cn/open/api/js/wb.js" type="text/javascript" charset="utf-8"></script> <script type="text/javascript"> jQuery(function(){ // window.setTimeout(function() { // Make it asynchronous if using the iframe mode. jQuery('div.post').each(function() { var url = jQuery(this).find('h2.post_title > a').first().attr('href'); if (typeof(url) == 'undefined') { url = location.href; } var titlestr = jQuery(this).find('.post_title').text() + ': ' + jQuery(this).find('p').not('.wp-caption-text').text(); titlestr = titlestr.replace(/\s\s+/g, ' ').substr(0, 110); var buttonstr = '<div style="width:95%;text-align:right;margin-top:-40px;margin-bottom:40px;">'; var param = { url:url, type:'button', addition:'number', picture_search:'true', title:titlestr, ralateUid:'1691250947' // 关联用户的微博用户号码 }; var temp = []; for(var p in param) { temp.push(p + '="' + encodeURIComponent(param[p] || '') + '"'); } buttonstr += '<wb:share-button ' + temp.join(' ') + '></wb:share-button>'; buttonstr += '</div>'; jQuery(this).find('div.post_content').first().after(buttonstr); }); // jQuery.div.post.each // }, 5000); // window.setTimeout }); </script>
第一次重写后,IE不稳定地显示按钮、Firefox完全不行(IE竟然胜出,奇迹)。调试发现和一年前的一次优化有关。当时我把分享按钮的JS代码改为异步(橙色代码,页面加载完毕5秒后)运行,而此定时器似与WBML版按钮冲突。
之所以怀疑这个定时器,是因为观察了博客右边栏放置的静态代码“微博关注”按钮。我留意到它总能显示,并且当整个页面加载完毕、网页闲下来时才开始运作。猜想渣浪也发现这些按钮很耗时,于是也在按钮里内置定时器,把我这些外层的定时器顶得不干活了。
另注:渣浪程序员把“关联用户”的设置参数命名为ralateUid,嗯,从上一版延续至今以后也一直会继续错下去的拼写,厚道地猜想这是为了防鹅防寨故意拼错的。另外,微博文档里说抓图选项是searchPic,而快捷设置页里则可以看到是picture_search。我测试之后得知,picture_search是有效参数。