网站制作学习网网站优化→正文:flash优化实例
字体:

flash优化实例

网站优化 2008/4/12 10:14:42  点击:不统计

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的关键字标签的合理使用,会对提高排名有一定的作用。



·上一篇:flash的seo(优化) >>    ·下一篇:拯救自己被k 的站方法 >>
推荐文章
最新文章