2010年10月15日 星期五

AS3分享至社群網站與微網誌的兩件小事

現在的網站製作通常會有個分享到Facebook、分享到Plurk的功能。之前接一個案子發現兩個小地方:
第一:以前剛開始用這些分享機制時,找到的文件說明通常是使用javascript,呼叫Facebook或Plurk等所提供的分享程式,後面代入分享的網址、文字等。但其實也可以使用URLRequest,設定好要傳送的網址跟參數,再用navigateToURL去呼叫。這其實是理所當然的事,我竟然最近才發現......。
第二:在有使用swfAddress,網址中有/#/的情形下,分享到Facebook後,#後面會被自動清除的問題,之前通常是寫個轉址的程式,分享的時候網址#後面的路徑把它改成一個參數,在轉址程式裡面再將它重組回去,然後轉到該頁。好處是這樣也可以順便去做動態改變顯示圖片,內文,以及計數等動作。但其實也是有辦法讓分享網址帶#的。
首先,將"/#"改成"%2F#","%2F"其實就是"/"。這樣Facebook就會保留#與後面的東西了。不過又發生一個問題,就是Facebook似乎又會在網址後面幫你多加個"/",所以"/#"就會變成"//#",這樣連結又不對了。這邊又有個小技巧,就是在網址後面,"/#"的前面,多帶一個參數,例如"?rnd=1111",這樣即使多加了一個"/",還是可以正常連結。如果將分享寫成一個function,我們可以在function裡多一段程式幫我們自動轉:
if (url.indexOf("/#") >= 0)
{
  url = url.replace("/#", "?rnd="+String(Math.floor(Math.random()*10000))+"%2F#");
}
url是我們傳進去要分享的網址,例如:
"http://www.aaa.com/#/About",
上面這段程式碼就會幫我們轉成:
"http://www.aaa.com?rnd=2845%2F#/About";
分享後,Facebook會解讀成:
"http://www.aaa.com/?rnd=2845/#/About";
".com"後面會自動多一個"/",但這不影響連結。
當然如果原本分享的網址就想帶其他參數,那就要再多點判斷了。

沒有留言:

張貼留言