??xml version="1.0" encoding="utf-8" standalone="yes"?>
IE以及M目前览器的标题栏,原本都应该是?lt;title>q个HTML标签来控制的Q当然现在仍然也是。只是目前的D势是Q你最好不要再h你的|页面了,然后q需要接受用LLy躏。这也就是传说中龙见首不见,杀Z无媄无Ş的悖时Ajax技术!
在浏览器的标题栏中显C切的面标题Q是一个网专业的表现Q同时也能对搜烦引擎友好。当然如果放上适当的提CZ息,也会很有意义。那么怎么"动?的来定制q个标题内容呢?
我们知道使用ASP动态修Ҏ览器titleQ大概是q样的语句:
而在ASP.NET 1.1中,除了仍可以用上面的Ҏ外,我们多了一个看h"很美"的方法:
<title id="cltTitle" runat="server"></title>
In CS file:
protected HtmlGeneralControl cltTitle;
. . .
cltTitle.innerHtml = "birdshome's homepage";
今天CASP.NET 2.0时代Q除了上面的两种ҎQ我们还可以更容易的修改<title>内容Q?/font>
不过上面?动?都是在服务器端修?lt;title>的内容,实际上对于浏览器来说<title>标签内的内容是完全固定的了。下面言归正传,仔细来说说在客户端对IE览器标题栏的控Ӟ
对于IEH口中的面Q在面DOM对象中,document.title属性是用来代替<title>元素的innerHTML获取和设|IEH口标题栏内容的。请看下面这个示例:
<body>
<!-- page content -->
<script language="javascript">
document.body.onload = function()
{
document.title = "birdshome's homepage"Q?br /> };
</script>
</body>
</html>
对,是q么单就可以讄好普通IEH口的标题栏。那么这有什么好说的呢?q时候如果我们把完全相同的代码放?strong>模态窗?/strong>中执行呢Q模态窗口的标题栏是否会被修改?试验l果却是让h沮的,完全相同的这D代码,在模态窗口中失灵了。难道模态窗口提供的DOM和普通窗口不同吗Q其实模态窗口的DOM和普通窗口是相同的,而不同之处是当模态窗口中的页面装载完成后Qdocument.title属性确实会失效。这是Z么在上面的示例代码onload事g中的语句无效的原因。解册个限制的Ҏ很简单,是要在面q未装蝲完成时就修改document.titleQ所以在模态窗口中修改IE标题栏就因该使用q样的代码:
<body>
<!-- page content -->
<script language="javascript">
document.title = "birdshome's homepage"Q?br /> </script>
</body>
</html>
下面是一个包含了以上两种修改览器标题栏Ҏ的示例,其保存?abc.htm"文gQ用IE打开你就能很直观看到区别Q?/font>
<body>
<button onclick="foo()">
Open</button>
<script language="javascript">
document.body.onload = function()
{
document.title = "birdshome's homepage (rewrite)" + unescape(H_A0);
};
document.title = "birdshome's homepage (first)" + unescape(H_A0);
function foo()
{
window.showModalDialog("abc.htm");
}
</script>
</body>
</html>
l果是普通IEH口的标题栏会从"birdshome's homepage (first)"快速的变ؓ"birdshome's homepage (rewrite)"Q而用Open按钮开启的模态对话框的标题将一直是"birdshome's homepage (first)"。从q个CZ中我们可以看出来Q?font color="#0000ff">对于普通IEH口Q其标题栏是可以在页面生存期?strong>L时刻q行修改的。而模态窗口的标题栏,我们只能在其面装蝲完成?/strong>(onload事g触发?才能修改?/font>非模态对话框Qopend by showModelessDialogQ对于标题栏的处理和模态对话框完全一栗?br />
最后再说一个document.title使用中的技巧,我们知道如果在服务器?动?修改面titleӞ我们可以?lt;title></title>标签间写?amp;nbps;来在标题栏上产生q箋的空D入效果。这个技巧在模态窗口中ؓ有用Q这样一来我们就可以把那讨厌? - Web Page Dialog"字样用连l空格推到标题栏外去。用document.title属性来修改面标题栏后Q不是普通窗口还是模态窗口," "? "(I格)都不能用了,前者会被直接当字符串显C在标题栏上Q后者添加再多也只有一? "(I格)的宽度效果。这里我们又要用另一个空|实体 来解册个问题。代码如下:
<body>
<script language="javascript">
var HexA0s = "%A0 %A0 %A0 %A0";
document.body.onload = function()
{
document.title = "birdshome's homepage (rewrite)" + unescape(HexA0s);
};
</script>
</body>
</html>
]]>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<style>
.resizeDivClass
{
position:absolute;
background-color:gray;
width:1;
z-index:1;
left:1;
cursor:e-resize;
}
.td1 {
font-size: 12px;
white-space:nowrap;
overflow:hidden;
text-overflow:ellipsis;
color:#0000ff;
pos:expression(this.offsetLeft*1+this.offsetWidth*1+tab.offsetLeft);
}
</style>
<script language=javascript>
function MouseDownToResize(obj){
obj.mouseDownX=event.clientX;
obj.pareneTdW=obj.parentElement.offsetWidth;
obj.pareneTableW=tab.offsetWidth;
obj.setCapture();
}
function MouseMoveToResize(obj){
if(!obj.mouseDownX) return false;
var newWidth=obj.pareneTdW*1+event.clientX*1-obj.mouseDownX;
if(newWidth>0)
{
obj.parentElement.style.width = newWidth;
tab.style.width=obj.pareneTableW*1+event.clientX*1-obj.mouseDownX;
for (var i=1; i<=tab.rows(0).cells.length;i++){
var obj = eval("mydiv"+i);
obj.style.left = obj.parentElement.offsetLeft*1+obj.parentElement.offsetWidth*1+tab.offsetLeft;//obj.parentElement.style.pos;
}
}
}
function MouseUpToResize(obj){
obj.releaseCapture();
obj.mouseDownX=0;
}
function init(){
var tempStr = "";
for (var i=1; i<=tab.rows(0).cells.length;i++){
tempStr = '<div id="mydiv'+i+'" class="resizeDivClass" onmousedown="MouseDownToResize(this);" onmousemove="MouseMoveToResize(this);" onmouseup="MouseUpToResize(this);"></div>';
tab.rows(0).cells(i-1).innerHTML = tab.rows(0).cells(i-1).innerHTML+tempStr;
var obj = eval("mydiv"+i);
obj.style.left = obj.parentElement.style.pos;
}
}
</script>
</head>
<body onload="init()">
<table id=tab STYLE="table-layout:fixed;" >
<tr bgcolor=cccccc >
<td valign=top class="td1" ><nobr>改变table的列宽度?lt;/nobr></td>
<td valign=top class="td1" ><nobr>改变table的列宽度?lt;/nobr></td>
<td valign=top class="td1" ><nobr>改变table的列宽度?lt;/nobr></td>
</tr>
<tr>
<td class="td1"><nobr>改变table的列宽度</nobr></td>
<td class="td1"><nobr>改变table的列宽度</nobr></td>
<td class="td1"><nobr>改变table的列宽度</nobr></td>
</tr>
</table>
</body>
</html>
<INPUT onclick="window.external.AddFavorite('http://www.dostor.com/', Dostor)" type=button value=加入收藏?gt;
<INPUT onclick="window.external.addChannel('http://www.dostor.com/')" type=button value=加入到频?gt;
<INPUT onclick="this.style.behavior='url(#default#homepage)';this.setHomePage('http://www.dostor.com/')" type=button value=设成主页>
一、Head元素
Meta 它记录当前页面的信息Q例如字W编码、作者、版权和关键字等。还可以用来向服务器提供信息Q例如截止日期和面h间隔{。它的两U基本用法是Q告诉浏览器|页所识别的文件类型及语言cdQ让搜烦引擎按关键字搜烦C的网c?
Attribute 指定Meta标签是否包含Name (面描述信息)或HTTP Equiv (HTTP标题信息)。“Value”指定所提供信息的类型。有些值是已经定义好的Q在DW中有专门的属性检查器。例如description(说明)、keyword(关键?、refresh(h){。还可以指定其它L|如:creationdate(创徏日期) 、document ID(文档~号)和level({){?
Content。如果指定level({)为Value(?Q则Content可能是beginner(初)、intermediate(中)、advanced(高)?
Title面标题Q显C在览器的标题栏上?
Keywords 许多行的搜索引擎可自动阅读Meta标签中的Keywords内容Qƈ使用该信息在其数据库中徏立对该页面的索引。有些搜索引擎在建立索引时对关键字或字符有数量上的限制。有些则在关键字出限定范围时忽略所有关键字。因此ؓ|页_N关键字是很有必要的。在标志为Keywords的域中用逗号来分隔关键字?
Description 与Keywordsh怼的功能。只是用描述性的语句代替了关键字。部分搜索引擎在建立索引时对字符数有一定的限制Q因此应量a意赅?
Refresh使用Refresh元素可以指定在某一旉D后自动寚w面进行刷新?
Action指定是否要{到其它URL或刷新当前页面。要转到其它URLQ可单击Brower按钮选择要蝲入的面?
Delay在刷新页面之前以Uؓ单位的等待时_要立卛_新页面,可以在此域中输入0?
Base使用Base元素可设|基本URL?
Href指定基本URLQ可直接键入路径或选择?
Target指定所有链接的文档要打开的窗口。可以在当前框架集中选择一个框架或在其提供的四U保留窗口中选择其一Q默认ؓ_self?
Link使用Link元素可定义当前文档和其它文gQ如CSS文gQ之间的关系?
ID指定某链接的唯一标识W?
Title说明链接的关pR此属性对链接样式表非常合适?
Rel指定当前文档和Href域中文档之间的关pR其可能的值包括:Alternate(备?、Stylesheet(样式?、Start(启动)、Next(下一?、Prev(上一?、Content(内容)、Index(索引)、Glossary(词汇)、Copyright(版权)、Chapter(?、Section(?、Subsection(节)、Appendix(附录)、Help(帮助信息)、Bookmark(书签){。要指定多个关系Q请使用I格值分开?
二、实例说?br />
<title> HEAD元素使用集锦</title>
<!Q-|页标题 Q->
<meta httpQequiv=″ContentQType?content=″text/html; charset=gb2312?gt;
<!Q-|页内容cdQTXT或HTML格式Q编码方式ؓGB2312 Q->
<meta name=″keywords?content=″HEAD元素?gt;
<!Q- 关键字信?Q->
<meta name=″description?content=x|页用于说明HEAD元素的用方式?gt;
<!Q- 对网站的q一步描qͼQ?gt;
<meta httpQequiv=″refresh?content=?;URL=index.htm?gt;
<!Q-|页?U后自动hQ链接地址为index.htm?Q->
<base href=″?target=″_blank?gt;
<!Q-基本链接讑֮Q目标ؓ弹出新页面。此可用于Frame中指定链接昄的FrameQ例如:target=″main?gt;
<link rel=″stylesheet?href=″homepage.css?gt;
<!Q-调入样式表,链接样式表文件″homepage.css?Q->
showModalDialog() (IE 4+ 支持)
showModelessDialog() (IE 5+ 支持)
window.showModalDialog()Ҏ用来创徏一个显CHTML内容的模态对话框Q由于是对话框,因此它ƈ没有一般用window.open()打开的窗口的所有属性?/font>
window.showModelessDialog()Ҏ用来创徏一个显CHTML内容的非模态对话框?
当我们用showModelessDialog()打开H口Ӟ不必用window.close()d闭它Q当以非模态方式EIE5Q打开Ӟ 打开对话框的H口仍可以进行其他的操作Q即对话框不L最上面的焦点,当打开它的H口QRQ改变时Q它自动关闭。而模态EQIQ]方式的对话框始终有焦点(焦点不可U走Q直到它关闭Q。模态对话框和打开它的H口相联p,因此我们打开另外的窗口时Q他们的链接关系依然保存Qƈ且隐藏在zdH口的下面?/font>
使用Ҏ如下Q?/strong>
vReturnValue = window.showModalDialog(sURL [, vArguments] [, sFeatures])
vReturnValue = window.showModelessDialog(sURL [, vArguments] [, sFeatures])
参数说明Q?br /> sURL
必选参敎ͼcdQ字W串。用来指定对话框要显C的文档的URL?br /> vArguments
可选参敎ͼcdQ变体。用来向对话框传递参数。传递的参数cd不限Q包括数l等。对话框通过window.dialogArguments来取得传递进来的参数?br /> sFeatures
可选参敎ͼcdQ字W串。用来描q对话框的外观等信息Q可以用以下的一个或几个Q用分号?”隔开?br /> dialogHeight 对话框高度,不小于1Q0pxQテQ4中dialogHeight ?dialogWidth 默认的单位是emQ而テQ5中是pxQؓ方便其见Q在定义modal方式的对话框Ӟ用px做单位?br /> dialogWidth: 对话框宽度?br /> dialogLeft: 距离桌面左的距离?br /> dialogTop: L面上的距R?br /> center: {yes | no | 1 | 0 }Q窗口是否居中,默认yesQ但仍可以指定高度和宽度?br /> help: {yes | no | 1 | 0 }Q是否显C帮助按钮,默认yes?br /> resizable: {yes | no | 1 | 0 } QテQ5Q]Q是否可被改变大。默认no?br /> status: {yes | no | 1 | 0 } QIE5+Q:是否昄状态栏。默认ؓyes[ Modeless]或no[Modal]?br /> scroll:{ yes | no | 1 | 0 | on | off }Q指明对话框是否昄滚动条。默认ؓyes?/font>
<font color="red">[注:其他关于对于对话框里?表示“属性值对”有时不起作用]</font>
q有几个属性是用在HTA中的Q在一般的|页中一般不使用?br /> dialogHide:{ yes | no | 1 | 0 | on | off }Q在打印或者打印预览时对话框是否隐藏。默认ؓno?br /> edge:{ sunken | raised }Q指明对话框的边框样式。默认ؓraised?br /> unadorned:{ yes | no | 1 | 0 | on | off }Q默认ؓno?/font>
传入参数Q?/strong>
要想对话框传递参敎ͼ是通过vArguments来进行传递的。类型不限制Q对于字W串cdQ最大ؓ4096个字W。也可以传递对象,例如Q?/font>
test1.htm
< script>
var mxh1 = new Array("mxh","net_lover","孟子E?)
var mxh2 = window.open("about:blank","window_mxh")
// 向对话框传递数l?br /> window.showModalDialog("test2.htm",mxh1)
// 向对话框传递window对象
window.showModalDialog("test3.htm",mxh2)
< /script>
test2.htm
< script>
var a = window.dialogArguments
alert("您传递的参数为:" + a)
< /script>
test3.htm
< script>
var a = window.dialogArguments
alert("您传递的参数为window对象Q名Uͼ" + a.name)
< /script>
可以通过window.returnValue向打开对话框的H口q回信息Q当然也可以是对象。例如:
test4.htm
< script>
var a = window.showModalDialog("test5.htm")
for(i=0;i<a.length;i++) alert(a[i])
< /script>
test5.htm
< script>
function sendTo()
{
var a=new Array("a","b")
window.returnValue = a
window.close()
}
< /script>
< body>
< form>
< input value="q回" type=button onclick="sendTo()">
< /form>
常见问题Q?br /> 1.如何在模态对话框中进行提交而不新开H口Q?br /> 如果你的览器是IE5.5+,可以在对话框中用带name属性的iframeQ提交时可以制定targetiframe的name。对于IE4+Q你可以用高度ؓ0的frame来作。例如:
test6.htm
< script>
window.showModalDialog("test7.htm")
< /script> test7.htm
if(window.location.search) alert(window.location.search)
< frameset rows="0,*">
< frame src="about:blank">
< frame src="test8.htm">
< /frameset> test8.htm
< form target="_self" method="get">
< input name=txt value="test">
< input type=submit>
< /form>
< script>
if(window.location.search) alert(window.location.search)
< /script>
2.可以通过
http://servername/virtualdirname/test.htm?name=mxh
方式直接向对话框传递参数吗Q?br /> {案是不能。但在frame里是可以的?br />
hash属性:hash标注是一个url很好的习惯用法,它指定浏览器C个位于文档中的anchor位置Q相当于一个书{ք?/p>
host属性:描述渔歌url的主机名和端口,只有端口hurl的一个明部分时Qg才包括端口号?/p>
hostname属性:一个典型的url的主机名是网l上服务器的名字Q该|络存储有你的浏览器上可以查看的文档。对大多数Web站点来说Q服务器名不仅包括域名,也包括www前缀Q如果端口号是在url中特有的话,L名ƈ不包括,而是包括在host属性中?/p>
href属性:该属性提供一个指定窗口对象的整个url的字W串?/p>
pathname属性:url的\径名部分׃服务器rootQ根Q卷相关的目录结构组成。根不是目录的一部分Q如果url的\径是通向根目录中的一个文Ӟ那么location.pathname属性就是(/Q?/p>
port属性:端口号很用到。当指向一个没有赋l域名的的站点的url中,可以用location.port属性获取该|如果从一个url获取值ƈ想用那个l徏创徏一个urlQ一定要包括服务器IP地址和段口号QIP地址和段口号之间用(:Q分界?/p>
protocol属性:包括协议名,且后面紧跟着Q?Q分节目?/p>
assignҎQassign("url")通过q个Ҏ可以实现把一个新的url赋给location对象。当然你也可以采用直接赋值的Ҏ来实玎ͼ或者location.href来导航到一个新的网c采用assign的方法会使代码易l护?/p>
reloadҎQ这个方法可以把览器可能保存在内存中的元素Q在一D记录中Q的文档讄全部忽略掉,重新打开该文档,和浏览器上的h可不一栗它的效果好像是你选择了file菜单open file一栗当然如果你不想q样Q不惌么做Q有一个和q个Ҏ比较cM的方法,是history.goQ)Ҏ?/p>
replaceҎQ当用户从当前网,跌{到别的网,有时候是不是惌不能用后退按钮(Back)看到前一个网,告诉你一个方法,是采用location.replace("url")可以实现这个功能?/p>