精做高難度防水抓漏/壁癌/油漆等工程 責任施工、合約保固! | 新屋裝潢.舊屋裝修.合格裝潢 裝修證照.是專業施工品質的保障 |
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的關鍵字標籤的合理使用,會對提升排名有一定的作用。 |
易祺清潔公司 年終大掃除,解決您清潔的困擾,由我們專業的清潔服務員到府提供完善的清潔服務。 明日黃金屋 提供租屋廣告刊登與租屋查詢,有實景照片、電子地圖、租屋配對等功能。 明日黃金屋 租屋就找明日黃金屋 |