由于description己由meta标签给出,首页再来一个description显得有些多余。新近做了一个更改,把饭否同步到了首页网站副标题。我本身有换QQ签名的习惯,这下子可以同步到我的博客上来了。是否独具个性?按照同样的习惯,我把javascript代码贴在下面:

<script type="text/javascript">
var element;
function fanfou(userID,DIV) {
 element = DIV;
 var s = document.createElement('script');
 s.type = 'text/javascript';
 s.src = 'http://api.fanfou.com/statuses/user_timeline.json?id='+userID+'&count=1&callback=getText';
 document.getElementsByTagName('head')[0].appendChild(s);
}
function getText(jsonSource){
 document.getElementById(element).innerHTML = jsonSource[0].text;
}
</script>

使用的时候把这段代码复制到head标签之前,把body标签改一下:<body onload=”fanfou(‘你的饭否账号名’,'你的副标题块的ID’)”>。这句话的作用是在加载页面的时候触发fanfou这个函数,如果你不知道你的副标题块的ID是什么可以看看网页布局入门。但是使用中我发现这样触发还不够快,后面的内容都显示了description来没出来。在body开头加上这样一句:<script type=”text/javascript”>fanfou(‘你的饭否账号名’,'你的副标题块的ID’);</script>。这样效果更强,比用onload事件触发更快的显示出饭否第一条消息。

单纯想使用代码的到此可以stop了。我在试图实现些功能的时候想过利用RSS。最先想用PHP:

 <?php
require_once (ABSPATH . WPINC . '/rss.php');
$url = "http://api.fanfou.com/statuses/user_timeline/你的饭否账号名.rss?count=1";
 $resp = _fetch_remote_file( $url );
$rss = _response_to_rss( $resp );
foreach ( (array) $rss->items as $item ) {
$title = attribute_escape(strip_tags($item['title']));
echo str_replace("周健:","",$title);
}
?>

这里面调用了wordpress里面的rss.php文件,使用了其中几个函数。但是不知道yo2的服务器是怎么个结构,用“ABSPATH . WPINC . ‘/rss.php’”路径找不到rss.php文件。由于我没有使用边栏插件,rss.php文件必需我手动加载。我想了个投机的办法,调用“wp_widget_rss_output();”来加载这个文件,也是失败。后来干脆把rss.php复制到模板的function.php,发现这里面有yo2禁用的读取远程RSS的函数。这个方案所以无疾而终,我到现在还没想到办法。

在看javascript的时候发现它可以读取远程文件。饭否API中有三类文件json、rss和xml。其中rss和xml在javascript中都不能跨域访问,所以只有使用json。json是一个比rss和xml更轻量级的东西,更适合javascript处理。如果要处理xml,使用jquery将更方便,但是不能跨域访问,所以还是不能用。下面是用jquery处理xml的方式,由于不能跨域,所以要把xml保存在本地实验。另外,如果这里不使用xml而使用rss,有的浏览器可以成功,有的浏览器就不能成功。

<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script>
$.ajax({
url: 'http://api.fanfou.com/statuses/user_timeline/你的饭否账号名.xml?count=1',
type: 'GET',
dataType: 'xml',
timeout: 1000,
success: function(xml){
$(xml).find('text').each(function(){
var item_text = $(this).text();
$('#description').replaceWith(item_text);
});
}
});
</script>
</head>
<body>
<ol></ol>
<div id="description">12345</div>
<div id="results">fff</div>
</body>
</html>

Related posts:

  1. Twitter Weekly Updates for 2010-03-28
  2. yo2的天气代码
  3. 群硕笔试第一题
  4. Twitter Weekly Updates for 2010-04-18
  5. Twitter Weekly Updates for 2010-04-25