精做高難度防水抓漏/壁癌/油漆等工程
責任施工、合約保固!
代書新屋裝潢.舊屋裝修.合格裝潢
裝修證照.是專業施工品質的保障

首頁  •  tw 論壇 • 網路行銷     • 

Flash網站的SEO

房東:原子小金剛
發表時間:2007-01-30
[檢舉]


下面介紹做這個SEO的步驟︰
1、首先大家要認識到,搜索引擎捕捉不了FLASH裡的文字,因此,FLASH裡的文本需要在外部讀取。這裡,每一則新聞做成一個HTML檔案,既讓FLASH可以讀取,也讓搜索引擎可以抓到。如page1.html,page2.html,page3.html
2、在給搜索引擎提交頁面的時候,一般都只提交首頁,然後根據首頁的鏈接等去捕捉其它頁面。如果提交的是一個純FLASH頁面,所有鏈接,外部讀取的檔案都透過AS實現的話,搜索引擎將無法獲取其它分頁的位址。因此,我們需要製作一個HTML檔案,放置相關的鏈接,如果希望用戶一開始看到的是 FLASH頁面,就用一次重定向代碼,到FLASH頁去,並且不帶參數。所以把FLASH首頁檔案命名為index_flash.htm,HTML版的頁面命名為index.html,接著,在index.html裡加入重定向代碼。建議不要用META,很容易給搜索引擎槍斃。這裡,可以採用JS︰

最保險的還是放在FLASH裡,用getURL來重定向,但這會造成延遲,影響用戶體驗。
3、捕捉到的分頁也需要重定向至FLASH頁面,此時需要把參數傳到FLASH中,因此重定向的位址必須是一個帶參數的,並且能區分不同頁面,最好的參數就莫過於當前HTML頁面的位址了。比如說在page1.html裡加上︰

4、讓JS把location.hash值傳給Flash,讓Flash讀回page1.html裡的內容。在JS裡用setVariable來設定︰index_flash.setVariable(\"link\",document.location.hash.slice(1))
在Flash獲取到link值以後,用LoadVars讀出來︰
var lv=new LoadVars()
lv.load(link)
lv.onData=function(src){
textBox.text=src
}
接下來,我會做一個簡單的演示文檔,結合實例把上面的步驟具體化。
演示文檔完成了,但是由於涉及的檔案比較多,直接給大家測試不方便,所以,先把整個製作過程跟大家描述下︰
1、 在你的站點放入幾個HTML檔案,page1.html,page2.html,page3.html,請注意,為了處理的方便,格式不要太複雜。最好使用如下格式︰
正文內容
toNews.js是每個分頁都重用的重定向代碼,故獨立出來一個檔案
location.href=\"index_flash.html#\"+document.location//把位址作為參數傳到 Flash頁面中識別。
2 、製作向搜索引擎提交的首頁index.html,該頁不能是FLASH版的,必須包含page1.html,page2.html,page3.html這些鏈接,或者透過層數不多的HTML分析,可以獲取這些位址。
index.html範例︰
然後index.html裡再加上代碼︰

讓你的HTML版網頁重定向至FLASH版網頁。
附︰index.html範例︰
news1

news2

news3


做到這一步,只要向百度提交index.html並被收錄,百度就會把page1.html,page2.html,page3.html列入索引中。
下面實現的就是如何透過重定向把內容顯示在FLASH中。
3、 新建一個FLASH文檔,在舞台放置兩個多行動態文本框,實例名分別為titles和contents,分別放新聞標題及內容。
本來,筆者打算直接把index.html直接讀進titles文本框裡,可惜鏈接放進去就會跳轉頁面,如果要避免的話,必須透過字元串分析把鏈接改成 asfunction協議,此法麻煩,而且容易受內容影響而出錯。所以,還是再建一個XML文檔提供給FLASH去讀取好了。
在index.html所在目錄下,建一XML檔案news.xml






在Flash裡新建一圖層,添加幀代碼︰
System.useCodepage = true;
titles.html = true;
var titlesLv = new XML();
titlesLv.load(\"news.xml\");
titlesLv.onLoad = function(success) {
if (success) {
var titles_arr = new Array();
var hrefs_arr = new Array();
titles.htmlText = \"\";
for (var i in titlesLv.childNodes[0].childNodes) {
titles_arr[i] = titlesLv.childNodes[0].childNodes[i].attributes.title;
hrefs_arr[i] = titlesLv.childNodes[0].childNodes[i].attributes.href;
}
for (var i in titles_arr) {
titles.htmlText += \"
\"+titles_arr[i]+\"\";
}
}
};
此段代碼是把解析XML檔案的,不屬本教程的重點,故不再贅述。
這其中的loadNews函數是調用新聞的,在下面添加︰
var contentsLv = new LoadVars();
function loadNews(href) {
contentsLv.load(href);
fscommand(\"setAddress\",href)//讓新聞加載的時候,修改位址欄#後的內容。這將在JS裡定義。
}
contents.html = true;
contentsLv.onData = function(src) {
fscommand(\"setTitle\",getTitle(src))//setTitle修改頁面的標題,也在JS裡定義。getTitle從html字元串裡獲得標題。該函數在AS裡定義
contents.htmlText = getContents(src);//getContents從html字元串裡獲取正文內容,將在AS裡定義。
下面定義這兩個字元串分析函數︰
分頁html的格式︰
正文內容
function getTitle(str){
var beginIndex=str.indexOf(\"\")//結束於標籤
return str.slice(beginIndex,endIndex)//標記後用slice函數截得
}
function getContents(str){
var beginIndex=str.indexOf(\"\")+8//正文可以從開始,也可以選擇標籤
return str.slice(beginIndex)//標記後用slice截取。
}
};
儲存FLA檔案到index.html所在目錄,檔案名為index_flash.fla。然後點“檔案”-“發布設定”,在HTML選項卡裡,模板下拉選擇“帶FSCOMMAND跟蹤的FLASH”,然後點“發布”按鈕。接著在“格式”選項卡裡把HTML勾去掉。
4、 此時用記事本打開生成的index_flash.html,找到//代碼放在此處(Place your code here)這句,在index_flash_DoFSCommand函數裡寫︰
if(command==\"setTitle\"){
theTitle=args
}
if(command==\"setAddress\"){
document.location.hash=args
}
然後,在該函數外定義一個設定標題的函數︰
function setTitle(){
document.title=theTitle
id=setTimeout(setTitle,1000)
}
之所以使用週期回調,不知道是不是BUG的緣故,經常改完標題後,都會自動改回來,或者多個#號什麼的。
現下,還需要在加載後透過JS調用 Flash的loadNews函數。在Flash 8控件裡頭,可以透過CallFunction輕鬆調用函數,AS3甚至透過ExternalInterface可以直接在JS裡寫AS函數,但是目前還有少數用戶的PLAYER處在7的階段,所以就先介紹老方法︰setVariable。
該方法可以設FLASH控件的變量值,但是如何透過改變量觸發Flash的loadNews函數呢?這裡介紹AS裡頭的addProperty方法。
Object.addProperty(proname:String,getter:Function,setter:Function)
proname,屬性名稱。
getter,當讀取變量時調用的函數。
setter,當設定變量時調用的函數。
我們透過添加一個這樣的屬性,讓JS的setVariable執行的時候,調用該函數。
AS裡追加︰
this.addProperty(\"link\",getLink,setLink)
function getLink(){
}
function setLink(link){
loadNews(link)
}
不知道為什麼,如果不定義getLink,這個setLink也不可用,所以只好把這形式弄上去。
所以,此時可以在JS裡添加這么\個函數︰
function JS_loadNews(){
if(document.location.hash.slice(1)!=\"\"){//假如#號後面不帶參數
index_flash.setVariable(\"link\",document.location.hash.slice(1))//就設定FLASH裡的link值,從而調用裡頭的loadNews函數。
}
}
然後在body標籤裡加onload=JS_loadNews()
此時,重定向到FLASH頁面,並且真實反映相關內容的過程已經完成。雖然本質是一種作弊行為,但是已經沒有欺騙用戶了。
最後,往百度提交index.html,就可以給百度收到4個頁面了。當然,內容要合法,否則也會給拒絕收錄。
至於如何提升排名,那是內容的問題了,不是技術層面的東西,就不在這討論了。一般來說,META的關鍵字標籤的合理使用,會對提升排名有一定的作用。





  • 贊助網站       

    易祺清潔公司
    年終大掃除,解決您清潔的困擾,由我們專業的清潔服務員到府提供完善的清潔服務。
    明日黃金屋
    提供租屋廣告刊登與租屋查詢,有實景照片、電子地圖、租屋配對等功能。
    明日黃金屋
    租屋就找明日黃金屋



  •  共 0 人回應

    姓名:
    佈告內容: