修改浏览器页面标题2009-01-16 16:23浏览器页面的标题是通过设置Application的 pageTitle属性而来的,但是这个属性是不能通过绑定来实时更新的,例如你不能在ActionScript里指望像下面这样来修改浏览器的标题:
pageTitle = "我要设置自己的标题";
而只能在应用的MXML页面中去设死标题:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
pageTitle="我要设置标题"
...
可是有时候我们又需要在标题中反映我们当前在操作的子模块,那么这个可以通过调用javascript来修改标题,需要用到的ActionScript类为ExternalInterface,方法为call,该方法的说明为如下:
public function call(functionName:string, ...parameters):Object;
第一个参数就是要调用的javascript方法名称,第二个参数是该javascript方法要传入的参数
对于上面的问题,我们可以这样来处理:
1.修改FLEX工程中的html-template下的index.template.html文件,添加个javascript方法如下(加在</head>标签之前就可以了):
<script language="JavaScript" type="text/javascript">
function changeTitle(title){
document.title = title;
}
</script>
为什么要修改这个index.template.html文件?因为这是个模板文件,所有生成的html封装文件是以此作为模板的,因此如果你修改编译后生成的HTML封装文件的话,下次编译后又没了,因为编译前会删除之前编译的文件。
2.在FLEX中调用
if (ExternalInterface.available){
ExternalInterface.call("changeTitle","设置成我的标题");
}
pageTitle = "我要设置自己的标题";
而只能在应用的MXML页面中去设死标题:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
pageTitle="我要设置标题"
...
可是有时候我们又需要在标题中反映我们当前在操作的子模块,那么这个可以通过调用javascript来修改标题,需要用到的ActionScript类为ExternalInterface,方法为call,该方法的说明为如下:
public function call(functionName:string, ...parameters):Object;
第一个参数就是要调用的javascript方法名称,第二个参数是该javascript方法要传入的参数
对于上面的问题,我们可以这样来处理:
1.修改FLEX工程中的html-template下的index.template.html文件,添加个javascript方法如下(加在</head>标签之前就可以了):
<script language="JavaScript" type="text/javascript">
function changeTitle(title){
document.title = title;
}
</script>
为什么要修改这个index.template.html文件?因为这是个模板文件,所有生成的html封装文件是以此作为模板的,因此如果你修改编译后生成的HTML封装文件的话,下次编译后又没了,因为编译前会删除之前编译的文件。
2.在FLEX中调用
if (ExternalInterface.available){
ExternalInterface.call("changeTitle","设置成我的标题");
}