IE5及其以后版本支持在CSS中使用expression,用来把CSS属性和Javas cript表达式关联起来,这里的CSS属性可以是元素固有的属性,也可以是自定义属性。就是说CSS属性后面可以是一段Javas cript表达式,CSS属性的值等于Javas cript表达式计算的结果。 在表达式中可以直接引用元素自身的属性和方法,也可以使用其他浏览器对象。这个表达式就好像是在这个元素的一个成员函数中一样。
给元素固有属性赋值
例如,你可以依照浏览器的大小来安置一个元素的位置。
#myDiv {
position: absolute;
width: 100px;
height: 100px;
left: expression(document.body.offsetWidth - 110 + "px");
top: expression(document.body.offsetHeight - 110 + "px");
background: red;
}
给元素自定义属性赋值
CSS的自定义属性Expression,可以自己定义属性,自己在属性里写需要的代码,这样就可以结合CSS的特性与JS特效,实现对整体页面上相同元素的控制。是不是觉得有点不可思议?我们先拿新手们经常问的怎么消除页面上的链接虚线框为例。
通常的做法是:
<a href="link1.htm" onfocus="this.blur()">link1</a>
<a href="link2.htm" onfocus="this.blur()">link2</a>
<a href="link3.htm" onfocus=" this.blur()">link3</a>
粗看或许还体现不出采用expression的优势,但如果你的页面上有几十甚至上百个链接,这时的你难道还会机械式地Ctrl+C,Ctrl+V么,何况两者一比较,哪个产生的冗余代码更多呢?
采用expression的做法如下:
<style type="text/css">
a {star : expression(onfocus=this.blur)}
</style>
<a href="link1.htm">link1</a>
<a href="link2.htm">link2</a>
<a href=" link3.htm">link3</a>
说明:里面的star就是自己任意定义的属性,你可以随自己喜好另外定义,接着包含在expression()里的语句就是JS脚本,在自定义属性与expression之间可别忘了还有一个引号,因为实质还是CSS,所以放在style标签内,而非script内。OK,这样就很容易地用一句话实现了页面中的链接虚线框的消除。不过你先别得意,如果触发的特效是CSS的属性变化,那么出来的结果会跟你的本意有差别。例如你想随鼠标的移进移出而改变页面中的文本框颜色更改,你可能想当然的会认为应该写为
<style type="text/css">
input {star : expression(onmouseover=this.style.backgroundColor="#FF0000";
onmouseout=this.style.backgroundColor="#FFFFFF")}
</style>
<input type="text">
<input type="text">
<input type="text">
可结果却是出现脚本出错,正确的写法应该把CSS样式的定义写进函数内,如下所示:
<style type="text/css">
input {star : expression(onmouseover=function()
{this.style.backgroundColor="#FF0000"},
onmouseout=function(){this.style.backgroundColor="#FFFFFF"}) }
</style>
<input type="text">
<input type="text">
<input type="text">
你是否为了你的站点文章过多而反复做链接上一页、下一页这些烦琐的工作发愁呢?现在有了ASP,只要你的主页支持ASP,你就可以很简单的实现对文章的管理了,排序、链接、显示这些工作都让ASP去完成吧!这么轻松的主页维护,你是不是也想试一试呢?
请看以下实现ASP分页程序的代码:
<language="vbscript"
dim conn
dim connstr
dim totalPut
dim CurrentPage
dim TotalPages
dim i,j
dim sql
dim rs
on error resume next
'打开数据库
connstr="DBQ="+server.mappath("book.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
set conn= server.createobject("ADODB.CONNECTION")
conn.open connstr
set rs=server.createobject("adodb.recordset")
'定义每页文章显示数
const MaxPerPage=18
if not isempty(request("page")) then
currentPage=cint(request("page"))
else
currentPage=1
end if
sql="select * from learning order by articleid desc"
Set rs= Server.CreateObject("ADODB.Recordset")
rs.open sql,conn,1,1
if rs.eof and rs.bof then
response.write "<p align='center'> 还 没 有 任 何 文 章</p>"
else
'数据库中文章数totalput
totalPut=rs.recordcount
if currentpage<1 then
currentpage=1
end if
'统计总页数currentpage
if (currentpage-1)*MaxPerPage>totalput then
if (totalPut mod MaxPerPage)=0 then
currentpage= totalPut \ MaxPerPage
else
currentpage= totalPut \ MaxPerPage + 1
end if
end if
if currentPage=1 then
showpage totalput,MaxPerPage,"index.asp"
showContent
showpage totalput,MaxPerPage,"index.asp"
else
if (currentPage-1)*MaxPerPage<totalPut then
rs.move (currentPage-1)*MaxPerPage
dim bookmark
bookmark=rs.bookmark
showpage totalput,MaxPerPage,"index.asp"
showContent
showpage totalput,MaxPerPage," index.asp"
else
currentPage=1
showpage totalput,MaxPerPage,"index.asp"
showContent
showpage totalput,MaxPerPage,"index.asp"
end if
end if
rs.close
end if
set rs=nothing
conn.close
set conn=nothing
sub showContent
dim i
i=0
do while not rs.eof
>
'选择显示数据库内容
<a href="openarticle.asp?id=<=rs("articleid")>"><=rs("title")></a>[点击:<=rs("hits")>]<br>
<
'当显示记录大于maxperpage时结束这页
i=i+1
if i>=MaxPerPage then exit do
rs.movenext
loop
end sub
function showpage(totalnumber,maxperpage,filename)
'求出当每页18篇文章时总共的页数
dim n
if totalnumber mod maxperpage=0 then
n= totalnumber \ maxperpage
else
n= totalnumber \ maxperpage+1
end if
response.write "<form method=Post action="&filename&">"
response.write "<p align='center'><font color='#000080'>>>分页</font> "
'显示页数链接的条件
if CurrentPage<2 then
response.write "<font color='#000080'>首页 上一页</font> "
else
response.write "<a href=" http://www.webjx.com/htmldata/2006-03-06/&filename&"?page=1&>首页</a>"
response.write "<a href=" http://www.webjx.com/htmldata/2006-03-06/&filename&"?page="&CurrentPage-1&">上一页</a>"
end if
if n-currentpage<1 then
response.write "<font color='#000080'>下一页 尾页</font>"
else
response.write "<a href="&filename&"?page="&(CurrentPage+1)
response.write ">下一页</a> <a href="http://www.webjx.com/htmldata/2006-03-06/&filename&"?page="&n &">尾页</a>"
end ifc
response.write "<font color='#000080'> 页次:</font><strong><font color=red>"&CurrentPage&"</font><font color='#000080'>/"&n&"</strong>页</font>"
response.write "<font color='#000080'> 共<b>"&totalnumber&"</b>篇文章 <b>"&maxperpage&"</b>篇文章/页</font>"
response.write " <font color='#000080'>转到:</font><input type='text' name='page' size=4 maxlength=10 class=smallInput value="¤tpage&">"
response.write "<input class=buttonface type='submit' value=' Goto ' name='cndok'></span></p></form>"
end function
>
以上代码很简单的就实现了ASP网页的多种分页功能,不论是对浏览者还是管理者都能很方便的浏览和管理,
--
我的网络营销boogger
http://china-news-it.blogspot.com
目前全世界的开源CMS(内容管理系统)有上百种,但真正能够被广泛接受和使用的应该不超过10种。最近packt在全球范围内评选最佳开源CMS的结果出来了,入围3甲的是Joomla!、Drupal和Plone,应该说具有一定的说服力。下面对最终获奖的3个产品进行一定的分析评价。
1、Joomla! http://www.joomla.org/ ? 中文社区:http://joomla.cn
Joomla!在中国有人称呼逐浪, Mambo的分支,是Mambo核心开发团队另起炉灶的产品。
自从mambo 被Miro公司所控制后,脱离了开源的轨道,核心开发团队出走,建立了分支Joomla!。借助老牌CMS-Mambo长年建立起来的人气,以及对网站制作的良好支持,joomla得到了迅速的发展。
Joomla!是使用PHP语言加上MySQL 数据库所开发的软件系统,可以在Linux、Windows、MacOSX等各种不同的平台上执行。目前是由Open Source Matters (www.opensourcematters.org)这个开放源码组织进行开发与支持。
Joomla的长处是在对外网站的建设方面,应用了非常多的网站进步的新技术,有上千种不同网站应用的附加套件及美工设计布景,另外可搭配的多种所视即所得编辑程序,很简易的就可以管理和编辑网站上的文章。所以Joomla得到了众多个人用户的青睐和支持,这也是他在06最佳开源CMS票选第一名的主要原因。
缺点:joomla虽然非常漂亮,但该系统对中文支持比较差,虽然有汉化版本,不过中文站点站点的效果还是令人失望,而且Joomla的主题并不是完全CSS控制的,修改起来比较麻烦。
总的来说,joomla在外部网站建设的方面有着优秀的表现,而且也是互联网上网站使用最多的CMS之一,所以joomla最多的应用方向还是建网站。典型应用:保时捷网站(巴西)、三菱公司网站、麦克杰克森的官方网站等等,以及众多中小型网站。
2、Drupal ? http://www.drupal.org 中文社区:http://drupal.cn
Drupal最初是由比利时人Dries Buytaert开发的一个社区讨论程序也就是BBS,由于其富有弹性的架构设计,在功能的不断扩充后逐渐发展成为一个内容管理系统。由于Druple是由bbs发展而来的,所以非常注重社区性和文章发布。以至于最初在国内被很多人用来部署自己的博客。Druple提供丰富的插件和功能模块,所以也越来越多地用于构造提供多种功能和服务的动态网站。
Drupal同joomla一样,也是使用PHP语言加上MySQL数据库所开发的软件系统,支持多种 操作系统平台。
Drupal的长处和joomla非常相似,在制作网站方面有着优秀的表现。同样也受到众多个人用户的支持。孰优孰劣很难决定,以至于在最佳开源CMS系统的评选中要经过加赛,joomla才以微弱的优势胜出,但这并不是就说明ioomla比drupal要更好。可以理解为joomla比drupal有更长的历史和更好的群众基础。如果说Druple比joomla好的地方,可以说是架构方面,Druple更灵活更开放。
缺点:Druple由于历史比joomla要短(因为joomla的前身mambo),所以在国内的知名度要稍低。与joomla一样,中文支持还是不理想,作为一个更多被个人用户使用的CMS,中文资料也比较薄弱。另外,作为主要用来设计网站的CMS模版方面也比joomla要少。
总的来说,drupal是和joomla一样优秀的建站CMS,你要建立一个网站,既可以选择drupal也可以选择joomla,而且选择都不错,基于个人好恶而以。典型应用:playstation亚洲网站等,以及众多中小型网站。(案例资料不全)
3、Plone ? http://www.plone.org ? 中文社区:http://czug.org
这里要重点说说大家不太熟悉的Plone。其实把plone放在跟joonla/druple等建站类的CMS一起来评选,本身就是对plone非常不公平的。Plone超强的稳定性、强健的架构、广泛的扩展性,使得其成为企业级开源CMS的最佳选择,而事实上plone的用户也多是企业,在plone的应用中,有70%都是作为企业内部的管理系统,仅有30%用在外部网站建设上。这也可能是plone较少人知道的原因之一。所以plone在最佳开源CMS网上投票的环节是落后的。即使这样plone也盖过了诸多开源CMS,名列第三名。可见plone的优秀,如果投票人是以企业用户为单位的,plone绝对是第一名。
Plone最早由Alan Runyan,Alexander Limi与Vidar Andersen在1999年开始开发,之后迅速成为流行而又强大的企业级内容管理系统。
Plone 是一个运行在Zope和CMF之上的开放源代码的企业级内容管理系统。Zope是web应用服务器,类似于J2EE、.NET,是一个优秀的开放源代码的WEB应用服务器。Plone已超出了单纯内容管理平台的范畴,实际上plone在逐步向应用开发平台进行发展。这使得plone比起其他cms来讲能够更大限度的满足企业级应用的需求。Plone的核心语言是python,这也是一个不被大众熟悉,却被eweek列入2006最应该学习的程序语言之一,google的核心语言就是pyhton。这一切神秘的东西都让plone看起来是那么的酷,呵呵,至少我是这么认为的。
Plone的优点不言而喻,能够被诸多大企业选中已经充分说明plone是一个强健、稳定的便于企业级应用开发的优秀CMS, 在一个zope服务器上可以轻松的开设无数个plone实例,使得分布式的系统建设变得非常轻松。Plone强大的权限和流程管理,对内核程序、定制程序、插件产品和管理内容的分离保护和存储,及更多优秀特性使得plone在企业级应用方面成为首选。而且国内有非常好的商业公司支持plone的企业应用,而且开发出plone中文开源版本。
缺点:plone对比建站类型的CMS在外观上要朴实平淡一些,但plone对CSS的支持是最彻底的,这点可能也是plone放弃漂亮外衣的原因。
总的来说,plone是所有开源CMS里最适合企业级应用的,plone的开发平台特性,使其可以在内容管理、项目管理、知识管理等更多地企业应用方面满足要求。典型应用:迪斯尼、ebay、诺基亚、摩托罗拉、美国航空航天局、美国海军、北约组织、美洲银行…;中国国内有网易、中国文化部、中国电信、上海航空、国机集团。
下列情况是从浏览器的地址栏正常取得Request.ServerVariables("HTTP_REFERER")的:
1.直接用<a href>
2.用Submit或<input type=image>提交的表单(POSTorGET)
3.使用Jscript提交的表单(POSTorGET)
下面我们再看看Request.ServerVariables("HTTP_REFERER")不能正常取值的情况:
1.从收藏夹链接
2.单击'主页'或者自定义的地址
3.利用Jscript的location.hreforlocation.replace()
4.在浏览器直接输入地址
5.<%Response.Redirect%>
6.<%Response.AddHeader%>或<meta http-equiv=refresh>转向
7.用XML加载地址
显然,Request.ServerVariables("HTTP_REFERER")在多数情况下是不能正常工作的,下面我们看一个例子:
ref.asp
<%
response.write "You came from: " & request.servervariables("http_referer")
%>
ref.htm
<%
Response.AddHeader "Refresh", "10;URL=ref.asp"
%>
<meta http-equiv='refresh' content='10;URL=ref.asp'>
<form method=GET action=ref.asp name=getform>
<input type=submit value=' Go there (GET) >>'>
<input type=image style='cursor:hand'>
</form><p>
看看上面的代码会得到什么的结果.
<form method=POST action=ref.asp name=postform>
<input type=submit value=' Go there (POST) >>'>
<input type=image style='cursor:hand'>
</form><p>
<a href='ref.asp'>直接链接<p>
<a href='#' onclick='window.location.href="ref.asp";return false;'>Javascriptlocation<p>
<a href='#'onclick='window.location.replace("ref.asp");return false;'>Javascriptreplace<p>
<a href='#' onclick='document.getform.submit();return false;'>javascriptGET<p>
<a href='#' onclick='document.postform.submit();return false;'>javascriptPOST
| |
| |
2007/4/8 - 2007/4/15 2007/4/15 - 2007/4/22 2007/4/22 - 2007/4/29 2007/4/29 - 2007/5/6 2007/5/6 - 2007/5/13 2007/5/13 - 2007/5/20 2007/5/20 - 2007/5/27 2007/5/27 - 2007/6/3 2007/6/3 - 2007/6/10 2007/6/10 - 2007/6/17 2007/6/17 - 2007/6/24 2007/6/24 - 2007/7/1 2007/7/8 - 2007/7/15 2007/12/2 - 2007/12/9 2007/12/9 - 2007/12/16 2007/12/16 - 2007/12/23 2009/10/18 - 2009/10/25 2010/1/10 - 2010/1/17
订阅 博文 [Atom]