2011年8月25日 星期四

手機網頁,重返瀏覽器時自動重新整理

在手機上離開瀏覽器後再回到瀏覽器通常會看到上一次離開的畫面
如果網頁屬於最新消息之類的訊息,讓使用者回到瀏覽器時自動reload會非常的方便
以下是使用javascript來判斷是否要reload頁面

var timenow = new Date().getTime();
timenow = Math.ceil(timenow/1000);
function autoReload(){
var checktime = new Date().getTime();
checktime = Math.ceil(checktime/1000);
if( (checktime - timenow) > 60 ){ //如果這邊超過60秒,應該是離開瀏覽器又回來,所以reload
location.reload();
}
timenow = checktime;
}
setInterval('autoReload();',5*1000); //5秒偵測一次

2011年8月18日 星期四

Firefox 6 網址列無法使用 javascript: function();

一般寫前端頁面如有使用 javascript 會在網址列直接下 javascript: function(); 來做debug的動作

更新到 firefox 6 發現網址列不吃 javascript: 了

原來有更好用的東西
tools -> web developer -> scratchpad

在裡面寫下要做的javascript語法,選取後按右鍵
Run 就可以看到執行結果

2011年8月15日 星期一

google weather api

最近某個東西需要用到氣象資料
氣象局有個 FTP 可以抓取資料,但資料不太齊全
FTP位置 ftp://ftpsv.cwb.gov.tw/pub/forecast/

然後找了 http://developer.yahoo.com/weather/
實在是不好用...

網路上翻了翻
看到 http://www.google.com/ig/api?hl=zh-tw&weather=taipei
傳入城市名就可以取得一個xml,真是方便
更方便的是傳入經緯度
http://www.google.com/ig/api?hl=zh-tw&weather=,,,25012085,121465701
真是佛心來得

2011年8月1日 星期一

facebook 啟用測試帳號

使用Facebook API來打造網站功能時如果又有綁一個帳號只能投票一次的功能
開發時通常測試會很困擾 (要一直不斷清資料庫)
Facebook 放出了測試帳號功能 https://developers.facebook.com/docs/test_users/
一個 app 可以有500組測試帳號

建立一個測試帳號

if( $_POST ){
    $url = 'https://graph.facebook.com/'.urlencode($facebook_app_id).'/accounts/test-users?';
    $url .= 'installed=false';
    $url .= '&name='.urlencode($_POST['name']);
    $url .= '&method=post';
    $url .= '&access_token='.urlencode($facebook_app_id).'|'.urlencode($facebook_app_secret);
    header('Location: '.$url); exit;
}

<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form method="post" action="test.php">
測試帳號匿名:<input type="text" name="name"><br>
<input type="submit" value="送出">
</form>
</body>
</html>

Developer App 裡面有介面可以新增
About->Roles->Testers->Add 然後填資料就可以新增測試帳號
官方文件 http://developers.facebook.com/blog/post/527/

2011年7月27日 星期三

iphone safari 電話號碼判斷

iphone會貼心的將電話號碼變成連結
但有時候會誤判,像序號之類的東西在手機上呈現會被iphone加上連結
只要在
<head>裡加上

<meta name="format-detection" content="telephone=no">
這樣就可以關閉iphone判斷電話號碼的功能 




2011年7月26日 星期二

Facebook API 使用 FQL 抓取相簿裡的所有相片 (photo) 實作範例教學

接著 Facebook API 使用 FQL 抓取相簿封面 (album) 實作範例教學
加入

//將 aid 傳入
try{
    $aPhoto = $facebook->api(array(
        'method' => 'fql.query',
        'query' => 'select src,src_big from photo where aid ="'.$aid.'"'
    ));
}catch(Exception $e) { }

$aPhoto 即為該相簿裡的照片路徑

Facebook API 使用 FQL 抓取相簿封面 (album) 實作範例教學

PHP部分:

$facebook = new Facebook(
array(
'appId' => $facebook_app_id,
'secret' => $facebook_app_secret,
'cookie' => true,
)
);

//facebook id
$fb_id = $facebook->getUser();

$aLoginParam = array( 'req_perms' => 'user_photos' );

//登入
if( !$fb_id ){
$auth_url = $facebook->getLoginUrl($aLoginParam);
header('Location: '.$auth_url);
exit;
}

//權限
try{
$perm = $facebook->api(array(
'method' => 'fql.query',
'query' => 'select user_photos from permissions where uid='.$fb_id
));
if( $perm[0]['user_photos'] != '1' ){
$url = $facebook->getLoginUrl($aLoginParam);
header('Location: '.$url); exit;
}
}catch (Exception $e) { }

//取得封面的
try{
$aAlbum = $facebook->api(array(
'method' => 'fql.query',
'query' => 'select aid,name,cover_pid from album where owner='.$fb_id
));
}catch(Exception $e){ }

$aId = array();
foreach( $aAlbum as $k => $v ){
$aId[] = $v['aid'];
}

//取得封面圖片路徑
try{
$aPhoto = $facebook->api(array(
'method' => 'fql.query',
'query' => 'select pid,src_big from photo where pid in(select cover_pid from album where owner='.$fb_id.')'
));
}catch(Exception $e){ }

$aCover = array();
foreach( $aPhoto as $k => $v ){
$aCover[$v['pid']] = $v['src_big'];
}
foreach( $aAlbum as $k => $v ){
$aAlbum[$k]['cover_src'] = $aCover[$aAlbum[$k]['cover_pid']];
}
var_dump($aAlbum);


這樣 $aAlbum 會有相簿名稱(name)與圖片路徑(cover_src)