页面载入中...
首页 » JS

js 设为首页 加入收藏 兼容FF和IE浏览器

//兼容FF和IE浏览器的设为首页、本页收藏

<script type=”text/javascript” language=”javascript”>
//兼容FF和IE浏览器的设为首页、本页收藏
function AddFavorite(sURL, sTitle) {
try {
window.external.addFavorite(sURL, sTitle);
} catch (e) {
try {
window.sidebar.addPanel(sTitle, sURL, “”);
} catch (e) {
alert(“加入收藏失败,请使用Ctrl+D进行添加”);
}
}
}
function SetHome(obj,vrl) {
try {
obj.style.behavior=’url(#default#homepage)’;obj.setHomePage(vrl);
} catch(e) {
if(window.netscape) {
try {
netscape.security.PrivilegeManager.enablePrivilege(“UniversalXPConnect”);
} catch (e) {
alert(“此操作被浏览器拒绝!\n请在浏览器地址栏输入”about:config”并回车\n然后将[signed.applets.codebase_principal_support]设置为’true’”);
}
var prefs = Components.classes['@mozilla.org/preferences-service;1'].getService(Components.interfaces.nsIPrefBranch);
prefs.setCharPref(‘browser.startup.homepage’,vrl);
}
}
}
</script>

<a onclick=”AddFavorite(‘http://www.sina.com.cn’,document.title)” style=”cursor:hand”>加入收藏</a>
<a onclick=”SetHome(this,’http://www.sina.com.cn’)” >设为首页</a>

Technorati : ,
Del.icio.us : ,
Zooomr : ,
Flickr : ,

动态加载script标签的js

下面为动态加载script标签的js

JavaScript代码

1. <script>

2.

3. var element = document.createElement(“script”);

4.

5. function createScript(compId,dataId){

6. element.src = “http://othersite.com/json.php?comp_id=” + compId + “&data_id=” + dataId + “”;

7. element.type = “text/javascript”;

8. element.language = “javascript”;

9. }

10.

11. function writeContent(){

12. alert(productJSON.product[0].name);

13. }

14.

15. window.onload = function(){

16. createScript(1,2);

17. document.getElementsByTagName(“head”)[0].appendChild(element);

18. }

19.

20. if(document.all){

21. element.onreadystatechange = function(){//IE用

22. var state = element.readyState;

23. if (state == “loaded” || state == “interactive” || state == “complete”) {

24. writeContent();

25. }

26. };

27.

28. } else {

29. element.onload = function() {//FF用

30. writeContent();

31. };

32. }

33.

34.

35. </script>

下面是json.php echo出来的内容
var productJSON = {‘product’: [
{'name' : '物件名1'},
{'building' : '建物名1'},
{'address' : '5'}
]
};

jQuery语法总结和注意事项(节摘)

1、关于页面元素的引用
  通过jquery的$()引用元素包括通过id、class、元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法。

2、jQuery对象与dom对象的转换
  只有jquery对象才能使用jquery定义的方法。注意dom对象和jquery对象是有区别的,调用方法时要注意操作的是dom对象还是jquery对象。
  普通的dom对象一般可以通过$()转换成jquery对象。
  如:$(document.getElementById(“msg”))则为jquery对象,可以使用jquery的方法。
由于jquery对象本身是一个集合。所以如果jquery对象要转换为dom对象则必须取出其中的某一项,一般可通过索引取出。
如:$(“#msg”)[0],$(“div”).eq(1)[0],$(“div”).get()[1],$(“td”)[5]这些都是dom对象,可以使用dom中的方法,但不能再使用Jquery的方法。
以下几种写法都是正确的:

程序代码
$(“#msg”).html();
$(“#msg”)[0].innerHTML;
$(“#msg”).eq(0)[0].innerHTML;
$(“#msg”).get(0).innerHTML;



3、如何获取jQuery集合的某一项
  对于获取的元素集合,获取其中的某一项(通过索引指定)可以使用eq或get(n)方法或者索引号获取,要注意,eq返回的是jquery对象,而get(n)和索引返回的是dom元素对象对于jquery对象只能使用jquery的方法,而dom对象只能使用dom的方法,如要获取第三个<div>元素的内容。有如下两种方法:

程序代码 程序代码
$(“div”).eq(2).html(); //调用jquery对象的方法
$(“div”).get(2).innerHTML; //调用dom的方法属性



4、同一函数实现set和get
Jquery中的很多方法都是如此,主要包括如下几个:
$(“#msg”).html(); //返回id为msg的元素节点的html内容。
$(“#msg”).html(“<b>new content</b>”);
//将”<b>new content</b>” 作为html串写入id为msg的元素节点内容中,页面显示粗体的new content

$(“#msg”).text(); //返回id为msg的元素节点的文本内容。
$(“#msg”).text(“<b>new content</b>”);
//将”<b>new content</b>” 作为普通文本串写入id为msg的元素节点内容中,页面显示<b>new content</b>

$(“#msg”).height(); //返回id为msg的元素的高度
$(“#msg”).height(“300″); //将id为msg的元素的高度设为300
$(“#msg”).width(); //返回id为msg的元素的宽度
$(“#msg”).width(“300″); //将id为msg的元素的宽度设为300

$(“input”).val(“); //返回表单输入框的value值
$(“input”).val(“test”); //将表单输入框的value值设为test

$(“#msg”).click(); //触发id为msg的元素的单击事件
$(“#msg”).click(fn); //为id为msg的元素单击事件添加函数
同样blur,focus,select,submit事件都可以有着两种调用方法

5、集合处理功能
  对于jquery返回的集合内容无需我们自己循环遍历并对每个对象分别做处理,jquery已经为我们提供的很方便的方法进行集合的处理
包括两种形式:

程序代码 程序代码
$(“p”).each(function(i){this.style.color=['#f00','#0f0','#00f'][i]})
//为索引分别为0,1,2的p元素分别设定不同的字体颜色。

$(“tr”).each(function(i){this.style.backgroundColor=['#ccc','#fff'][i%2]})
//实现表格的隔行换色效果

$(“p”).click(function(){alert($(this).html())})
//为每个p元素增加了click事件,单击某个p元素则弹出其内容



6、扩展我们需要的功能

程序代码 程序代码
$.extend({
min: function(a, b){return a < b?a:b; },
max: function(a, b){return a > b?a:b; }
}); //为jquery扩展了min,max两个方法


使用扩展的方法(通过”$.方法名”调用):
alert(“a=10,b=20,max=”+$.max(10,20)+”,min=”+$.min(10,20));

7、支持方法的连写
所谓连写,即可以对一个jquery对象连续调用各种不同的方法。
例如:
$(“p”).click(function(){alert($(this).html())})
.mouseover(function(){alert(‘mouse over event’)})
.each(function(i){this.style.color=['#f00','#0f0','#00f'][i]});

8、操作元素的样式
主要包括以下几种方式:
$(“#msg”).css(“background”); //返回元素的背景颜色
$(“#msg”).css(“background”,”#ccc”) //设定元素背景为灰色
$(“#msg”).height(300); $(“#msg”).width(“200″); //设定宽高
$(“#msg”).css({ color: “red”, background: “blue” });//以名值对的形式设定样式
$(“#msg”).addClass(“select”); //为元素增加名称为select的class
$(“#msg”).removeClass(“select”); //删除元素名称为select的class
$(“#msg”).toggleClass(“select”); //如果存在(不存在)就删除(添加)名称为select的class

9、完善的事件处理功能
Jquery已经为我们提供了各种事件处理方法,我们无需在html元素上直接写事件,而可以直接为通过jquery获取的对象添加事件
如:
$(“#msg”).click(function(){alert(“good”)}) //为元素添加了单击事件
$(“p”).click(function(i){this.style.color=['#f00','#0f0','#00f'][i]})
//为三个不同的p元素单击事件分别设定不同的处理
jQuery中几个自定义的事件:
(1)hover(fn1,fn2):一个模仿悬停事件(鼠标移动到一个对象上面及移出这个对象)的方法。当鼠标移动到一个匹配的元素上面时,会触发指定的第一个函数。当鼠标移出这个元素时,会触发指定的第二个函数。
//当鼠标放在表格的某行上时将class置为over,离开时置为out。
$(“tr”).hover(function(){
$(this).addClass(“over”);
},
function(){
$(this).addClass(“out”);
});
(2)ready(fn):当DOM载入就绪可以查询及操纵时绑定一个要执行的函数。
$(document).ready(function(){alert(“Load Success”)})
//页面加载完毕提示”Load Success”,相当于onload事件。与$(fn)等价
(3)toggle(evenFn,oddFn): 每次点击时切换要调用的函数。如果点击了一个匹配的元素,则触发指定的第一个函数,当再次点击同一元素时,则触发指定的第二个函数。随后的每次点击都重复对这两个函数的轮番调用。
//每次点击时轮换添加和删除名为selected的class。
$(“p”).toggle(function(){
$(this).addClass(“selected”);
},function(){
$(this).removeClass(“selected”);
});
(4)trigger(eventtype): 在每一个匹配的元素上触发某类事件。
例如:
$(“p”).trigger(“click”); //触发所有p元素的click事件
(5)bind(eventtype,fn),unbind(eventtype): 事件的绑定与反绑定
从每一个匹配的元素中(添加)删除绑定的事件。
例如:
$(“p”).bind(“click”, function(){alert($(this).text());}); //为每个p元素添加单击事件
$(“p”).unbind(); //删除所有p元素上的所有事件
$(“p”).unbind(“click”) //删除所有p元素上的单击事件

10、几个实用特效功能
其中toggle()和slidetoggle()方法提供了状态切换功能。
如toggle()方法包括了hide()和show()方法。
slideToggle()方法包括了slideDown()和slideUp方法。

11、几个有用的jQuery方法
$.browser.浏览器类型:检测浏览器类型。有效参数:safari, opera, msie, mozilla。如检测是否ie:$.browser.isie,是ie浏览器则返回true。
$.each(obj, fn):通用的迭代函数。可用于近似地迭代对象和数组(代替循环)。

$.each( [0,1,2], function(i, n){ alert( “Item #” + i + “: ” + n ); });
等价于:
var tempArr=[0,1,2];
for(var i=0;i<tempArr.length;i++){
alert(“Item #”+i+”: “+tempArr[i]);
}
也可以处理json数据,如
$.each( { name: “John”, lang: “JS” }, function(i, n){ alert( “Name: ” + i + “, Value: ” + n ); });
结果为:
Name:name, Value:John
Name:lang, Value:JS
$.extend(target,prop1,propN):用一个或多个其他对象来扩展一个对象,返回这个被扩展的对象。这是jquery实现的继承方式。
如:
$.extend(settings, options);
//合并settings和options,并将合并结果返回settings中,相当于options继承setting并将继承结果保存在setting中。
var settings = $.extend({}, defaults, options);
//合并defaults和options,并将合并结果返回到setting中而不覆盖default内容。
可以有多个参数(合并多项并返回)
$.map(array, fn):数组映射。把一个数组中的项目(处理转换后)保存到到另一个新数组中,并返回生成的新数组。
如:
var tempArr=$.map( [0,1,2], function(i){ return i + 4; });
tempArr内容为:[4,5,6]
var tempArr=$.map( [0,1,2], function(i){ return i > 0 ? i + 1 : null; });
tempArr内容为:[2,3]
$.merge(arr1,arr2):合并两个数组并删除其中重复的项目。
如:$.merge( [0,1,2], [2,3,4] ) //返回[0,1,2,2,3,4]
$.trim(str):删除字符串两端的空白字符。
如:$.trim(” hello, how are you? “); //返回”hello,how are you? ”

12、解决自定义方法或其他类库与jQuery的冲突
  很多时候我们自己定义了$(id)方法来获取一个元素,或者其他的一些js类库如prototype也都定义了$方法,如果同时把这些内容放在一起就会引起变量方法定义冲突,Jquery对此专门提供了方法用于解决此问题。
  使用jquery中的jQuery.noConflict();方法即可把变量$的控制权让渡给第一个实现它的那个库或之前自定义的$方法。之后应用 Jquery的时候只要将所有的$换成jQuery即可,如原来引用对象方法$(“#msg”)改为jQuery(“#msg”)。
如:
jQuery.noConflict();
// 开始使用jQuery
jQuery(“div p”).hide();
// 使用其他库的 $()
$(“content”).style.display = ‘none’;

转载:http://www.webjx.com/JavaScript/20071109/javascript_js_866_3.html

Javascript中最常用的55个经典技巧

1. oncontextmenu=”window.event.returnValue=false” 将彻底屏蔽鼠标右键
<table border oncontextmenu=return(false)> <td>no </table> 可用于Table

2. <body onselectstart=”return false”> 取消选取、防止复制

3. onpaste=”return false” 不准粘贴

4. oncopy=”return false;” oncut=”return false;” 防止复制

5. <link rel=”Shortcut Icon” href=”favicon.ico”> IE地址栏前换成自己的图标

6. <link rel=”Bookmark” href=”favicon.ico”> 可以在收藏夹中显示出你的图标


7. <input style=”ime-mode:disabled”> 关闭输入法


8. 永远都会带着框架
<script language=”JavaScript”> <!–
if (window == top)top.location.href = “frames.htm”; //frames.htm为框架网页
// –> </script>


9. 防止被人frame
<SCRIPT LANGUAGE=JAVASCRIPT> <!–
if (top.location != self.location)top.location=self.location;
// –> </SCRIPT>


10. 网页将不能被另存为
<noscript> <*** src=”/*.html>”; </***> </noscript>


11. <input type=button value=”/查看网页源代码
onclick=”window.location = “view-source:”+ “http://www.pconline.com.cn”">
12.删除时确认
<a href=”"javascript :if(confirm(“确实要删除吗?”))location=”boos.asp?&areyou=删除&page=1″”>删除 </a>


13. 取得控件的绝对位置
//Javascript
<script language=”Javascript”>
function getIE(e){
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent){
t+=e.offsetTop;
l+=e.offsetLeft;
}
alert(“top=”+t+”/nleft=”+l);
}
</script>
//VBScript
<script language=”VBScript”> <!–
function getIE()
dim t,l,a,b
set a=document.all.img1
t=document.all.img1.offsetTop
l=document.all.img1.offsetLeft
while a.tagName <>”BODY”
set a = a.offsetParent
t=t+a.offsetTop
l=l+a.offsetLeft
wend
msgbox “top=”&t&chr(13)&”left=”&l,64,”得到控件的位置”
end function
–> </script>


14. 光标是停在文本框文字的最后
<script language=”javascript”>
function cc()
{
var e = event.srcElement;
var r =e.createTextRange();
r.moveStart(“character”,e.value.length);
r.collapse(true);
r.select();
}
</script>
<input type=text name=text1 value=”123″ onfocus=”cc()”>


15. 判断上一页的来源
javascript :
document.referrer


16. 最小化、最大化、关闭窗口
<object id=hh1 classid=”clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11″>
<param name=”Command” value=”Minimize”> </object>
<object id=hh2 classid=”clsid:ADB880A6-D8FF-11CF-9377-00AA003B7A11″>
<param name=”Command” value=”Maximize”> </object>
<OBJECT id=hh3 classid=”clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11″>
<PARAM NAME=”Command” value=”/Close”> </OBJECT>
<input type=button value=”/最小化 onclick=hh1.Click()>
<input type=button value=”/demoblog/最大化 onclick=hh2.Click()>
<input type=button value=关闭 onclick=hh3.Click()>
本例适用于IE


17.屏蔽功能键Shift,Alt,Ctrl
<script>
function look(){
if(event.shiftKey)
alert(“禁止按Shift键!”); //可以换成ALT CTRL
}
document.onkeydown=look;
</script>


18. 网页不会被缓存
<META HTTP-EQUIV=”pragma” CONTENT=”no-cache”>
<META HTTP-EQUIV=”Cache-Control” CONTENT=”no-cache, must-revalidate”>
<META HTTP-EQUIV=”expires” CONTENT=”Wed, 26 Feb 1997 08:21:57 GMT”>
或者 <META HTTP-EQUIV=”expires” CONTENT=”0″>


19.怎样让表单没有凹凸感?
<input type=text style=”"”border:1 solid #000000″>

<input type=text style=”border-left:none; border-right:none; border-top:none; border-bottom:
1 solid #000000″> </textarea>


20. <div> <span>& <layer>的区别?
<div>(division)用来定义大段的页面元素,会产生转行
<span>用来定义同一行内的元素,跟 <div>的唯一区别是不产生转行
<layer>是ns的标记,ie不支持,相当于 <div>


21.让弹出窗口总是在最上面:
<body onblur=”this.focus();”>


22.不要滚动条?
让竖条没有:
<body style=”overflow:scroll;overflow-y:hidden”>
</body>
让横条没有:
<body style=”overflow:scroll;overflow-x:hidden”>
</body>
两个都去掉?更简单了
<body scroll=”no”>
</body>


23.怎样去掉图片链接点击后,图片周围的虚线?
<a href=”#” onFocus=”this.blur()”> <img src=”/logo.jpg” border=0> </a>


24.电子邮件处理提交表单
<form name=”form1″ method=”post” action=mailto:****@***.com
enctype=”text/plain”>
<input type=submit>
</form>


25.在打开的子窗口刷新父窗口的代码里如何写?
window.opener.location.reload()


26.如何设定打开页面的大小
<body onload=”top.resizeTo(300,200);”>
打开页面的位置 <body onload=”top.moveBy(300,200);”>


27.在页面中如何加入不是满铺的背景图片,拉动页面时背景图不动
<STYLE>
body
{background-image:url(/logo.gif); background-repeat:no-repeat;
background-position:center;background-attachment: fixed}
</STYLE>


28. 检查一段字符串是否全由数字组成
<script language=”Javascript”> <!–
function checkNum(str){return str.match(//D/)==null}
alert(checkNum(“1232142141″))
alert(checkNum(“123214214a1″))
// –> </script>


29. 获得一个窗口的大小
document.body.clientWidth; document.body.clientHeight


30. 怎么判断是否是字符
if (/[^/x00-/xff]/g.test(s)) alert(“含有汉字”);
else alert(“全是字符”);


31.TEXTAREA自适应文字行数的多少
<textarea rows=1 name=s1 cols=27 onpropertychange
=”this.style.posHeight=this.scrollHeight”>
</textarea>


32. 日期减去天数等于第二个日期
<script language=Javascript>
function cc(dd,dadd)
{
//可以加上错误处理
var a = new Date(dd)
a = a.valueOf()
a = a – dadd * 24 * 60 * 60 * 1000
a = new Date(a)
alert(a.getFullYear() + “年” + (a.getMonth() + 1) + “月” + a.getDate() + “日”)
}
cc(“12/23/2002″,2)
</script>


33. 选择了哪一个Radio
<HTML> <script language=”vbscript”>
function checkme()
for each ob in radio1
if ob.checked then
window.alert ob.value
next
end function
</script> <BODY>
<INPUT name=”radio1″ type=”radio” value=”/style” checked>Style
<INPUT name=”radio1″ type=”radio” value=”/demoblog/barcode”>Barcode
<INPUT type=”button” value=”check” onclick=”checkme()”>
</BODY> </HTML>


34.脚本永不出错
<SCRIPT LANGUAGE=”JavaScript”>
<!– Hide
function killErrors() {
return true;
}
window.onerror = killErrors;
// –>
</SCRIPT>


35.ENTER键可以让光标移到下一个输入框
<input onkeydown=”if(event.keyCode==13)event.keyCode=9″>


36. 检测某个网站的链接速度:
把如下代码加入 <body>区域中:
<script language=Javascript>
tim=1
setInterval(“tim++”,100)
b=1
var autourl=new Array()
autourl[1]=1000){this.resized=true;this.style.width=1000;}” align=absMiddle border=0>www.njcatv.net”
autourl[2]=”javacool.3322.net”
autourl[3]=1000){this.resized=true;this.style.width=1000;}” align=absMiddle border=0>www.sina.com.cn”
autourl[4]=”www.nuaa.edu.cn”
autourl[5]=1000){this.resized=true;this.style.width=1000;}” align=absMiddle border=0>www.cctv.com”
function butt(){
***(” <form name=autof>”)
for(var i=1;i <autourl.length;i++)
***(” <input type=text name=txt”+i+” size=10 value=”/测试中……> =》 <input type=text
name=url”+i+” size=40> =》 <input type=button value=”/demoblog/GO
onclick=window.open(this.form.url”+i+”.value)> <br>”)
***(” <input type=submit value=刷新> </form>”)
}
butt()
function auto(url){
document.forms[0]["url"+b].value=url
if(tim>200)
{document.forms[0]["txt"+b].value=”/链接超时”}
else
{document.forms[0]["txt"+b].value=”/demoblog/时间”+tim/10+”秒”}
b++
}
function run(){for(var i=1;i <autourl.length;i++)***(” <img src=http://”+autourl+”/”+Math.random()+” width=1 height=1
onerror=auto(“http://”+autourl+”")>”)}
run() </script>


37. 各种样式的光标
auto :标准光标
default :标准箭头
hand :手形光标
wait :等待光标
text :I形光标
vertical-text :水平I形光标
no-drop :不可拖动光标
not-allowed :无效光标
help :?帮助光标
all-scroll :三角方向标
move :移动标
crosshair :十字标
e-resize
n-resize
nw-resize
w-resize
s-resize
se-resize
sw-resize


38.页面进入和退出的特效
进入页面 <meta http-equiv=”Page-Enter” content=”revealTrans(duration=x, transition=y)”>
推出页面 <meta http-equiv=”Page-Exit” content=”revealTrans(duration=x, transition=y)”>
这个是页面被载入和调出时的一些特效。duration表示特效的持续时间,以秒为单位。transition表示使用哪种特效,取值为1-23:
  0 矩形缩小
  1 矩形扩大
  2 圆形缩小
  3 圆形扩大
  4 下到上刷新
  5 上到下刷新
  6 左到右刷新
  7 右到左刷新
  8 竖百叶窗
  9 横百叶窗
  10 错位横百叶窗
  11 错位竖百叶窗
  12 点扩散
  13 左右到中间刷新
  14 中间到左右刷新
  15 中间到上下
  16 上下到中间
  17 右下到左上
  18 右上到左下
  19 左上到右下
  20 左下到右上
  21 横条
  22 竖条
  23 以上22种随机选择一种


39.在规定时间内跳转
<META http-equiv=V=”REFRESH” content=”5;URL=http://www.51js.com”>


40.网页是否被检索
<meta name=”ROBOTS” content=”属性值”>
  其中属性值有以下一些:
  属性值为”all”: 文件将被检索,且页上链接可被查询;
  属性值为”none”: 文件不被检索,而且不查询页上的链接;
  属性值为”index”: 文件将被检索;
  属性值为”follow”: 查询页上的链接;
  属性值为”noindex”: 文件不检索,但可被查询链接;
  属性值为”nofollow”: 文件不被检索,但可查询页上的链接。


41、email地址的分割
把如下代码加入 <body>区域中
<a href=”mailto:webmaster@sina.com”>webmaster@sina.com </a>


42、流动边框效果的表格
把如下代码加入 <body>区域中
<SCRIPT>
l=Array(6,7,8,9,’a',’b',’b',’c',’d',’e',’f')
Nx=5;Ny=35
t=” <table border=0 cellspacing=0 cellpadding=0 height=”+((Nx+2)*16)+”> <tr>”
for(x=Nx;x <Nx+Ny;x++)
t+=” <td width=16 id=a_mo”+x+”>  </td>”
t+=” </tr> <tr> <td width=10 id=a_mo”+(Nx-1)+”>  </td> <td colspan=”+(Ny-2)+” rowspan=”+(Nx)+”>  </td> <td width=16 id=a_mo”+(Nx+Ny)+”> </td> </tr>”
for(x=2;x <=Nx;x++)
t+=” <tr> <td width=16 id=a_mo”+(Nx-x)+”>  </td> <td width=16 id=a_mo”+(Ny+Nx+x-1)+”>  </td> </tr>”
t+=” <tr>”
for(x=Ny;x>0;x–)
t+=” <td width=16 id=a_mo”+(x+Nx*2+Ny-1)+”>  </td>”
***(t+” </tr> </table>”)
var N=Nx*2+Ny*2
function f1(y){
for(i=0;i <N;i++){
c=(i+y)%20;if(c>10)c=20-c
document.all["a_mo"+(i)].bgColor=”"”"#0000″+l[c]+l[c]+”‘”}
y++
setTimeout(‘f1(‘+y+’)',’1′)}
f1(1)
</SCRIPT>

43、JavaScript主页弹出窗口技巧
窗口中间弹出
<script>
window.open(“http://www.cctv.com”,”",”width=400,height=240,top=”+(screen.availHeight-240)/2+”,left=”+(screen.availWidth-400)/2);
</script>
============
<html>
<head>
<script language=”LiveScript”>
function WinOpen() {
msg=open(“”,”DisplayWindow”,”toolbar=no,directories=no,menubar=no”);
msg.***(” <HEAD> <TITLE>哈 罗! </TITLE> </HEAD>”);
msg.***(” <CENTER> <H1>酷 毙 了! </H1> <h2>这 是 <B>JavaScript </B>所 开 的 视 窗! </h2> </CENTER>”);
}
</script>
</head>
<body>
<form>
<input type=”button” name=”Button1″ value=”Push me” onclick=”WinOpen()”>
</form>
</body>
</html>
==============
一、在下面的代码中,你只要单击打开一个窗口,即可链接到赛迪网。而当你想关闭时,只要单击一下即可关闭刚才打开的窗口。
  代码如下:
   <SCRIPT language=”JavaScript”>
   <!–
  function openclk() {
  another=open(‘1000){this.resized=true;this.style.width=1000;}” align=absMiddle border=0>http://www.ccidnet.com’,’NewWindow’);
  }
  function closeclk() {
  another.close();
  }
  //–>
   </SCRIPT>
   <FORM>
   <INPUT TYPE=”BUTTON” NAME=”open” value=”/打开一个窗口” onClick=”openclk()”>
   <BR>
   <INPUT TYPE=”BUTTON” NAME=”close” value=”/demoblog/关闭这个窗口” onClick=”closeclk()”>
   </FORM>
  二、上面的代码也太静了,为何不来点动感呢?如果能给页面来个降落效果那该多好啊!
  代码如下:
   <script>
  function drop(n) {
  if(self.moveBy){
  self.moveBy (0,-900);
  for(i = n; i > 0; i–){
  self.moveBy(0,3);
  }
  for(j = 8; j > 0; j–){
  self.moveBy(0,j);
  self.moveBy(j,0);
  self.moveBy(0,-j);
  self.moveBy(-j,0);
  }
  }
  }
   </script>
   <body onLoad=”drop(300)”>
  三、讨厌很多网站总是按照默认窗口打开,如果你能随心所欲控制打开的窗口那该多好。
  代码如下:
   <SCRIPT LANGUAGE=”JavaScript”>
   <!– Begin
  function popupPage(l, t, w, h) {
  var windowprops = “location=no,scrollbars=no,menubars=no,toolbars=no,resizable=yes” +
  ”,left=” + l + “,top=” + t + “,width=” + w + “,height=” + h;
  var URL = “http://www.80cn.com”;
  popup = window.open(URL,”MenuPopup”,windowprops);
  }
  // End –>
   </script>
   <table>
   <tr>
   <td>
   <form name=popupform>
   <pre>
  打开页面的参数 <br>
  离开左边的距离: <input type=text name=left size=2 maxlength=4> pixels
  离开右边的距离: <input type=text name=top size=2 maxlength=4> pixels
  窗口的宽度: <input type=text name=width size=2 maxlength=4> pixels
  窗口的高度: <input type=text name=height size=2 maxlength=4> pixels
   </pre>
   <center>
   <input type=button value=”打开这个窗口!” onClick=”popupPage(this.form.left.value, this.form.top.value, this.form.width.value,
this.form.height.value)”>
   </center>
   </form>
   </td>
   </tr>
   </table>你只要在相对应的对话框中输入一个数值即可,将要打开的页面的窗口控制得很好。
44、页面的打开移动
把如下代码加入 <body>区域中
<SCRIPT LANGUAGE=”JavaScript”>
<!– Begin
for (t = 2; t > 0; t–) {
for (x = 20; x > 0; x–) {
for (y = 10; y > 0; y–) {
parent.moveBy(0,-x);
}
}
for (x = 20; x > 0; x–) {
for (y = 10; y > 0; y–) {
parent.moveBy(0,x);
}
}
for (x = 20; x > 0; x–) {
for (y = 10; y > 0; y–) {
parent.moveBy(x,0);
}
}
for (x = 20; x > 0; x–) {
for (y = 10; y > 0; y–) {
parent.moveBy(-x,0);
}
}
}
//–>
// End –>
</script>


45、显示个人客户端机器的日期和时间
<script language=”LiveScript”>
<!– Hiding
today = new Date()
***(“现 在 时 间 是: “,today.getHours(),”:”,today.getMinutes())
***(” <br>今 天 日 期 为: “, today.getMonth()+1,”/”,today.getDate(),”/”,today.getYear());
// end hiding contents –>
</script>


46、自动的为你每次产生最後修改的日期了:
<html>
<body>
This is a simple HTML- page.
<br>
Last changes:
<script language=”LiveScript”>
<!– hide script from old browsers
***(document.lastModified)
// end hiding contents –>
</script>
</body>
</html>


47、不能为空和邮件地址的约束:
<html>
<head>
<script language=”JavaScript”>
<!– Hide
function test1(form) {
if (form.text1.value == “”)
alert(“您 没 写 上 任 何 东 西, 请 再 输 入 一 次 !”)
else {
alert(“嗨 “+form.text1.value+”! 您 已 输 入 完 成 !”);
}
}
function test2(form) {
if (form.text2.value == “” ||
form.text2.value.indexOf(‘@’, 0) == -1)
alert(“这 不 是 正 确 的 e-mail address! 请 再 输 入 一 次 !”);
else alert(“您 已 输 入 完 成 !”);
}
// –>
</script>
</head>
<body>
<form name=”first”>
Enter your name: <br>
<input type=”text” name=”text1″>
<input type=”button” name=”button1″ value=”输 入 测 试” onClick=”test1(this.form)”>
<P>
Enter your e-mail address: <br>
<input type=”text” name=”text2″>
<input type=”button” name=”button2″ value=”输 入 测 试” onClick=”test2(this.form)”>
</body>


48、跑马灯
<html>
<head>
<script language=”JavaScript”>
<!– Hide
var scrtxt=”怎麽样 ! 很酷吧 ! 您也可以试试.”+”Here goes your message the visitors to your
page will “+”look at for hours in pure fascination…”;
var lentxt=scrtxt.length;
var width=100;
var pos=1-width;
function scroll() {
pos++;
var scroller=”";
if (pos==lentxt) {
pos=1-width;
}
if (pos <0) {
for (var i=1; i <=Math.abs(pos); i++) {
scroller=scroller+” “;}
scroller=scroller+scrtxt.substring(0,width-i+1);
}
else {
scroller=scroller+scrtxt.substring(pos,width+pos);
}
window.status = scroller;
setTimeout(“scroll()”,150);
}
//–>
</script>
</head>
<body onLoad=”scroll();return true;”>
这里可显示您的网页 !
</body>
</html>


49、在网页中用按钮来控制前页,后页和主页的显示。
<html>
<body>
<FORM NAME=”buttonbar”>
<INPUT TYPE=”button” VALUE=”Back” onClick=”history.back()”>
<INPUT TYPE=”button” VALUE=”JS- Home” onClick=”location=’script.html’”>
<INPUT TYPE=”button” VALUE=”Next” onCLick=”history.forward()”>
</FORM>
</body>
</html>
50、查看某网址的源代码
把如下代码加入 <body>区域中
<SCRIPT>
function add()
{
var ress=document.forms[0].luxiaoqing.value
window.location=”view-source:”+ress;
}
</SCRIPT>
输入要查看源代码的URL地址:
<FORM> <input type=”text” name=”luxiaoqing” size=40 value=”http://”> </FORM>
<FORM> <br>
<INPUT type=”button” value=”查看源代码” onClick=add()>
</FORM>


51、title显示日期
把如下代码加入 <body>区域中:
<script language=”JavaScript1.2″>
<!–hide
var isnMonth = new
Array(“1月”,”2月”,”3月”,”4月”,”5月”,”6月”,”7月”,”8月”,”9月”,”10月”,”11月”,”12月”);
var isnDay = new
Array(“星期日”,”星期一”,”星期二”,”星期三”,”星期四”,”星期五”,”星期六”,”星期日”);
today = new Date () ;
Year=today.getYear();
Date=today.getDate();
if (document.all)
document.title=”今天是: “+Year+”年”+isnMonth[today.getMonth()]+Date+”日”+isnDay[today.getDay()]
//–hide–>
</script>


52、显示所有链接
把如下代码加入 <body>区域中
<script language=”JavaScript1.2″>
<!–
function extractlinks(){
var links=document.all.tags(“A”)
var total=links.length
var win2=window.open(“”,”",”menubar,scrollbars,toolbar”)
win2.***(” <font size=’2′>一共有”+total+”个连接 </font> <br>”)
for (i=0;i <total;i++){
win2.***(” <font size=’2′>”+links[i].outerHTML+” </font> <br>”)
}
}
//–>
</script>
<input type=”button” onClick=”extractlinks()” value=”显示所有的连接”>


53、回车键换行
把如下代码加入 <body>区域中
<script type=”text/javascript”>
function handleEnter (field, event) {
var keyCode = event.keyCode ? event.keyCode : event.which ?
event.which : event.charCode;
if (keyCode == 13) {
var i;
for (i = 0; i < field.form.elements.length; i++)
if (field == field.form.elements[i])
break;
i = (i + 1) % field.form.elements.length;
field.form.elements[i].focus();
return false;
}
else
return true;
}
</script>
<form>
<input type=”text” onkeypress=”return handleEnter(this, event)”> <br>
<input type=”text” onkeypress=”return handleEnter(this, event)”> <br>
<textarea>回车换行


54、确认后提交
把如下代码加入 <body>区域中
<SCRIPT LANGUAGE=”JavaScript”>
<!–
function msg(){
if (confirm(“你确认要提交嘛!”))
document.lnman.submit()
}
//–>
</SCRIPT>
<form name=”lnman” method=”post” action=”">
<p>
<input type=”text” name=”textfield” value=”确认后提交”>
</p>
<p>
<input type=”button” name=”Submit” value=”提交” onclick=”msg();”>
</p>
</form>


55、改变表格的内容
把如下代码加入 <body>区域中
<script ***script>
var arr=new Array()
arr[0]=”一一一一一”;
arr[1]=”二二二二二”;
arr[2]=”三三三三三”;
</script>
<select onchange=”zz.cells[this.selectedIndex].innerHTML=arr[this.selectedIndex]“>
<option value=a>改变第一格 </option>
<option value=a>改变第二格 </option>
<option value=a>改变第三格 </option>
</select>
<table id=zz border=1>
<tr height=20>
<td width=150>第一格 </td>
<td width=150>第二格 </td>
<td width=150>第三格 </td>
</tr>
</table>

转载出处:http://blog.csdn.net/java060515/archive/2007/08/09/1733396.aspx

2010-05-21 yy629 (资深程序员)

兼容ie, Firefox, Opera and Safari

Html代码 复制代码

  1. <html>
  2. <head>
  3. <script>
  4. function AddListeners () {
  5. var elemToCheck = document.getElementById (“myDiv”);
  6. if (elemToCheck.addEventListener) { // Firefox, Opera and Safari
  7. elemToCheck.addEventListener (‘DOMAttrModified’, OnAttrModified, false);
  8. } else if (elemToCheck.attachEvent) { // Internet Explorer
  9. elemToCheck.attachEvent (‘onpropertychange’, OnAttrModified);
  10. }
  11. }
  12. function OnAttrModified (event) {
  13. var txt = “”;
  14. if (event.attrChange) {
  15. // Firefox, Safari, Opera
  16. txt += “The element: ” + event.target;
  17. txt += “\nproperty: ” + event.attrName;
  18. txt += “\noriginal value: ” + event.prevValue;
  19. txt += “\n changed to: ” + event.newValue;
  20. } else {
  21. // Internet Explorer
  22. txt += “The element: ” + event.srcElement.tagName;
  23. txt += “\nproperty: ” + event.propertyName;
  24. var elem = event.srcElement;
  25. txt += “\nchanged value: ” + elem.attributes[event.propertyName].value;
  26. }
  27. alert (txt);
  28. }
  29. function ChangeDDD () {
  30. var div = document.getElementById (“myDiv”);
  31. div.setAttribute(“ddd”,”New Attribute”);
  32. }
  33. </script>
  34. </head>
  35. <body onload=“AddListeners ();”>
  36. <button onclick=“ChangeDDD ();”>Change ddd Attribute!</button>
  37. <div id=“myDiv” ddd=“Old Attribute”>
  38. divdivdivdivdivdivdivdiv
  39. </div>
  40. </body>
  41. </html>

来源:http://www.javaeye.com/problems/42763

使用PHP 快速生成Flash 动画【推荐】

Rich Internet Application 是 Web 2.0 中的新时髦词,并且就 Web 2.0 的实质而言,一个关键组件就是 Adobe Flash.了解如何将 Flash 动画集成到应用程序中,并使用 Ming 库动态生成 Flash动画。

Web 2.0 引入了 Rich Internet Application.但 Rich Internet Application 的含义是什么?通常,它意味着向应用程序中添加具有高度响应能力的交易操作。具体来说,它意味着可以即时更改页面中的小部件、Web 表单和报告,而无需从服务器中检索新页面。

一种用于构建 Rich Internet Application(RIA)的方法就是使用动态 HTML(Dynamic HTML,DHTML),它是 Ajax、JavaScript、层叠样式表(Cascading Style Sheet,CSS)和 HTML 的组合(请参阅 参考资料)。但是 DHTML 并不是向 Web 应用程序中添加互动操作的惟一方法。另一种重要方法是使用 Adobe Flash Player,使用它为 Web 站点添加交互操作已经有十年的历史。

第一版的 Flash 曾是用于创建动画图片的工具,而最新版本的 Flash 已经可以托管一个完整的界面,可用于控制 Web 服务访问并使用 ECMAScript(JavaScript 的正式版本)来提供完整的脚本支持。

了解 Flash

Flash Player 是集成到运行 Microsoft? Windows?、Mac OS X 和 Linux? 的计算机的 Web 浏览器中的一个插件。截至本文完稿时,最新版本的 Flash Player 是 V8.它是可以免费获得的,大多数浏览器都附带安装了此插件。它十分流行并且具有优秀的客户机渗透力 — 而这种渗透力随着 YouTube 和 Google Video 这类服务的出现得到了提高,这些服务都使用 Flash 显示视频流。

Flash Player 只是天平的一端。要发挥作用,Flash Player 还需要使用一个 Flash 动画。此类动画通常是使用一种 Flash 的开发工具编译的文件,其文件扩展名为 .swf.但正如您将在本文中看到的那样,还可以使用 Ming 库用几乎与动态创建图片相同的方法来动态构建 .swf 文件,并在 Web 服务器上绘制图形。Ming 库利用由 PHP 代码构建的对象和方法在新的 .swf 文件中构建操作代码。

您可以通过两种方法中的任意一种方法来查看 Web 站点中的 .swf 文件。第一种方法只需导航到 .swf 文件的 URL.这样做将把 Web 服务器的整个内容区域替换为 Flash 动画。此方法便于进行调试,但主要的用法还是将动画嵌入到 HTML Web 页面的 <object> 标记中。该 <object> 标记然后再通过 URL 引用 SWF 动画。<object> 方法的优点在于您可以把动画放在页面的任意位置,并可通过 JavaScript 代码进行动态控制,就像处理页面中的任何其他元素一样。

清单 1 显示的是一个引用 SWF 动画的 <object> 标记的示例。



清单 1. 嵌入式 Flash 动画


<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#
        version=6,0,40,0"
WIDTH="550" HEIGHT="400">
<PARAM NAME="movie" VALUE="lines.swf">
<EMBED src="lines.swf" WIDTH="550" HEIGHT="400"
TYPE="application/x-shockwave-flash"
PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer">
</EMBED>
</OBJECT>


这组标记将引用一个名为 lines.swf 的动画。内部的 <embed> 标记用于确保 Flash 动画可以在安装了插件的各种浏览器中播放。

标记还把 Flash Player 的高度和宽度分别指定为 550 像素和 400 像素。非常值得注意的是,Flash 动画中的图形都是基于矢量的,这意味着当您使用 Flash 命令绘制线条和文本时,那些元素都被存储为坐标并且按照匹配显示区域的比例进行缩放。如您所见,Flash 动画有自己的坐标系统,您可以按照适合自己的方法使代码尽可能整洁。

Ming

本文中提供的使用 Flash 动画的第一种方法是使用 Ming 库动态生成它们。Ming 库是一个 PHP 库,其中有一组映射到 SWF 动画中的数据类型的对象:子图形、图形、文本、位图等等。我将不讨论如何构建和安装 Ming,因为其操作是特定于平台的而且并不特别简单(请参阅 参考资料)。在本文中,我使用了预编译的扩展 php_ming.dll 库用于 Windows 版本的 PHP.

必须指出的是,Ming 仍处于开发阶段。截至本文完稿时,库的版本是 V0.4,并且较老版本中的一些命令在最新版本中不能使用。我使用了 V0.4 撰写本文,因此,要使用这段代码,您需要使用这个版本。

清单 2 显示了使用 Ming 库实现的 HelloWorld 示例。



清单 2. Hello.php


<?php
$f = new SWFFont( '_sans' );
$t = new SWFTextField();
$t->setFont( $f );
$t->setColor( 0, 0, 0 );
$t->setHeight( 400 );
$t->addString( 'Hello World' );
$m = new SWFMovie();
$m->setDimension( 2500, 800 );
$m->add( $t );
$m->save( 'hello.swf' );
?>


在命令行中运行这段代码将生成文件 hello.swf。当我在 Web 浏览器中打开该文件时,看到了图 1 所示的结果。



图 1. 使用 Ming 的 HelloWorld 示例

回过头来查看这段代码,我做的第一件事是创建指向一个内置字体(_sans)的指针,然后创建文本字段,设定字体、颜色和大小,最后为其提供一些文本内容(”Hello World”)。再接下来创建了一个 SWFMovie 对象并设定其尺寸。最后,向动画中添加了文本元素并将动画保存到文件中。

作为直接构建文件的替代性方法,也可以使用下面的代码,使 SWF 动画像页面那样输出,而无需使用 save 方法:

header( 'Content-type: application/x-shockwave-flash' );
$m->output( );


此过程类似于使用 PHP 中的 ImageMagick 库来构建位图。对于所有 Ming 示例,我都将使用 save 方法,但您可以根据喜好来选择是否使用 save 方法。

让文本动起来

只是将一些文本放入 Flash 动画中是没有多大意义的,除非您能让它动起来。因此我整合了清单 2 中的示例,它包括两段文本:一部分开始很小后来变得越来越大,而另一部分保持静态。



清单 3. Text.php


<?php
$f = new SWFFont( '_sans' );
$pt = new SWFTextField();
$pt->setFont( $f );
$pt->setColor( 0, 0, 0 );
$pt->setHeight( 400 );
$pt->addString( '1000' );
$tt = new SWFTextField();
$tt->setFont( $f );
$tt->setColor( 192, 192, 192, 90 );
$tt->setHeight( 350 );
$tt->addString( 'Points' );
$m = new SWFMovie();
$m->setDimension( 2500, 800 );
$pts = $m->add( $pt );
$pts->moveTo( 0, 0 );
$tts = $m->add( $tt );
$tts->moveTo( 1300, 200 );
for( $i = 0; $i < 10; $i++ ) {
  $m->nextframe();
  $pts->scaleTo( 1.0 + ( $i / 10.0 ), 1.0 + ( $i / 10.0 ) );
}
$m->save( 'text.swf' );
?>


在命令行中执行这段代码时,它将生成 text.swf。在 Web 浏览器中打开该文件时,我看到了图 2 所示的图片。



图 2. text.swf 文件
text.swf 文件

文本 “1000″ 开始时很小,大小为 350 个点。然后使用 scaleTo() 方法使其增大为 750 个点,方法是对动画对象使用 nextframe() 方法。

要理解其工作原理,需要了解一点 Flash 制作动画的方法。Flash 中的动画就像电影中的动画一样运行:按帧运行。子图形将按帧在动画框架中移动。一个主要差别是 Flash 不获取每帧的快照。它存储子图形对象在每帧的状态。

您可能会注意到,我有一个名为 $pt 的变量,该变量具有文本 “1000″。随后当我把 $pt 添加到动画中时,获得了通过 add() 方法返回的名为 $pts 的新对象。该对象是 SWFDisplayItem ,表示子图形的实例。然后我可以围绕动画框架的表面逐帧移动实例。这有点儿混乱,但我可以拥有同时移动的多个版本的 “1000″ 文本子图形或 “points” 文本子图形。

绘制一些图形

接下来要处理的是矢量图形。首先仅绘制一条简单的直线,它从框架的左侧顶部到右侧底部。



清单 4. Line.php


<?php
$m = new SWFMovie();
$m->setDimension( 300, 300 );
$s = new SWFShape();
$s->setLine( 10, 0, 0, 0 );
$s->movePenTo( 10, 10 );
$s->drawLineTo( 290, 290 );
$m->add( $s );
$m->save( 'line.swf' );
?>


在命令行中运行此脚本,然后查看输出的 .swf 文件,效果如图 3 所示。



图 3. 绘制简单的直线
绘制简单的直线

好的 — 这十分简单,也不怎么令人激动。那么我做了什么?创建了一个新的 SWFShape 对象,然后向其中添加了一些笔触移动和直线。然后我将其作为子图形添加到了动画中。

为了让它变得更有趣,我使用了与刚才文本中使用的相同的帧式动画。但在本例中,我用下面所示的代码使这条直线围绕动画的中心旋转。

清单 5. 旋转直线


<?php
$m = new SWFMovie();
$m->setDimension( 300, 300 );
$s = new SWFShape();
$s->setLine( 5, 0, 0, 0 );
$s->movePenTo( -100, -100 );
$s->drawLineTo( 100, 100 );
$ts = $m->add( $s );
$ts->moveTo( 150, 150 );
for( $i = 0; $i < 100; $i++ ) {
  $ts->rotate( 10 );
  $m->nextframe();
}
$m->save( 'rotate.swf' );
?>


在本例中,我从 -100, -100 到 100, 100 画了一条直线。这将把直线的中心放在坐标 0,0 处。这样,当我在旋转图形时,直线的中心将发生旋转。

当我向动画中添加图形时,将移动返回到框架中心的 SWFDisplayItem 。然后用 rotate() 方法使它旋转并每旋转一周就增大其框架。

使用图片

文本和诸如直线、圆、弧、曲线和矩形之类的简单矢量图形都是十分优秀的,但在理想的情况下,您必须能访问这些 Flash 动画中的图片。值得庆幸的是,Ming 库使您可以轻松的使用图片,如下所示。



清单 6. 使用图片


<?php
$img = new SWFBitmap( file_get_contents( 'megan.jpg' ) );
$s = new SWFShape();
$imgf = $s->addFill( $img );
$s->setRightFill( $imgf );
$s->movePenTo( 0, 0 );
$s->drawLineTo( $img->getWidth(), 0 );
$s->drawLineTo( $img->getWidth(), $img->getHeight() );
$s->drawLineTo( 0, $img->getHeight() );
$s->drawLineTo( 0, 0 );
$m = new SWFMovie();
$m->setDimension( $img->getWidth() * 2, $img->getHeight() * 2 );
$is = $m->add( $s );
$is->moveTo( $img->getWidth() / 2, $img->getHeight() / 2 );
for( $i = 0; $i < 10; $i++ )
{
$is->skewx( 0.02 );
$is->skewy( -0.03 );
$m->nextframe();
}
$m->save( 'image.swf' );
?>


在命令行中运行此脚本并在浏览器中查看 image.swf,结果如图 4 所示。



图 4. 生成的图片动画
生成的图片动画

此脚本在开始时读取了本地的 .jpeg 文件(在本例中,是我女儿 Megan 的照片)。然后创建一个矩形,并在其中填充图片。在那之后,它在10 帧处使用了位移效果使图片稍微移动。

继续移动

我只是触及了 Ming 库可为您提供的操作的表面。在这里我没有展示交互部分,在交互部分您可以将简单的脚本与元素连接起来。(但是,如果换成是交互操作,如果您有一个十分复杂的 Flash 动画,则可能需要考虑使用 Flash 开发工具来构建 Web 应用程序内与 Web 服务对话的 Flash 动画。)

构建更加复杂的 Flash 动画的另外一种选择是使用诸如 Adobe Flex 或 Laszlo 之类的制作工具,这两种工具都提供了用于为 Flash 动画的用户界面布局的 XML 语法以及一个更轻松地例程,可用于开发为界面提供互动操作的 JavaScript。

XML Chart 和 XML Gauge

给我留下深刻印象的两个 Flash SWF 是 XML Chart 和 XML Gauge,可在 maani.us 获得(请参阅 参考资料)。使用动画就可以轻松地为 Web 站点提供动态的规格和图形,您只需在 PHP 应用程序中创建 XML 页面。

第一步是从站点下载 SWF。然后将其嵌入到 Web 页面的 <object> 标记中并将 URL 提供给 XML 数据摘要。制作一个 PHP 页面按照控制所需的格式导出 XML。这些动画的 XML 格式在站点中得到了详细说明并且非常易于创建。

结束语

Flash 带来了一种机会,使您可轻松将大量交互操作添加到 Web 应用程序。就像一些小部件样式的控件一样,从微不足道开始,变得越来越流行。XML Chart 和 XML Gauge 提供了机会让您在投入大量时间了解 Ming、Flex 或 Laszlo 之前先尝试使用这些类型的 Flash 小部件。无论如何,值得花时间去了解 Flash 及其功能来扩展 Web 2.0 PHP 应用程序的功能及交互操作。

原文链接:http://www.ibm.com/developerworks/cn/opensource/os-php-flash/index.html

PHP开源AJAX框架

PHP开源AJAX框架

jQPie
这是一个扩展自jQuery,结合PHP的一个Ajax框架。支持XML,HTML和JSON handler。jQPie提供的功能包括:
利用$.getJSON方法简化来自PHP的请求和处理数据。
利用$.(element).load方法注入PHP生成的html到某一页面元素中。
利用$.jqpie方法直接从web页面调用PHP函数。在响应$.jqpie调用时从PHP函数反过来调用jQuery。

phpmsajax
一组PHP文件用来支持在PHP Web应用程序中使用Microsoft AJAX Library。

jsLINB
jsLINB 是一个完全的浏览器端javascrīpt解决方案,兼容大部分现代浏览器(IE6.0/IE7.0/firefox1.5 /firefox2.0/opera9/Safari2.0,Safari 缺乏测试)。它可以帮助程序开发者实现各种类型的RIA应用-在提供更加强大框架的同时更加易用。压缩的核心代码仅仅50k, 包括了javascrīpt类型检查,强制类型,精密且灵活的事件模型,自定义事件,observer和tie/untie, boxing/unBoxing/reBoxing模型,直接调用,dom生成,查询,遍历和操作,css 样式操作,css 类操作,dom属性操作,javascrīpt完美OO实现,javascrīpt线程,高级Ajax,强大的Drag Drop,超级控件(可在外观/模板/行为/数据模型四个维度上定制的标准控件,可完全自定义控件)等。

My-BIC
My-BIC是一个易于使用,强大的Ajax/PHP框架。
支 持XML,JSON和TEXT的格式Ajax数据传输。支持EasyForms:调用一个函数就能取得Form中的所有值,并为你创建一个少许美化的查询 串。ajaxObj.getForm (‘formid’)。 JSON客户端Encoding支持:利用该功能你就能够在客户端或服务器之间发送和接收经过JSON Encoding的数据。 网络断线保护:当服务器Down掉时My-BIC将帮助你删除请求并阻止产生更多的调用。内置Submission队列:所有的AJAX请求将会发送到正 确的顺序中,所有请求都会被存储在队列中防止被覆盖。提供一个帮助你在运行期进行调试的可视化操作界面。

aSSL
aSSL:SSL for Ajax。这个开源项目可用于那些需要SSL支持的Ajax应用中。

PHPLiveX


PHPLiveX是一个PHP类库可用于在web页面中使用Ajax调用PHP函数。它非常易于使用,在调用一个PHP函数不需要附加额外的功能,包含一个灵活地预加载属性,兼容IE, Opera, Mozilla, Firefox等浏览器。

RSPA
RSPA是一个基于组件事件驱动的ajax框架适用于PHP4与PHP5。使用这个框架可以从客户端控制事件调用服务器端PHP class函数。也可以在服服务器端直接操作客户端对象。

phpAjaxTags
phpAjaxTags是模仿著名Java标签库”AjaxTags”的一个PHP标记库。简单但强大,易于使用与安装。不需要编写js代码就能实现ajax功能。

XAJAX
xajax 通过Javascrīpt直接调用PHP函数。它使用Javascrīpt stub来调用PHP脚本中的函数,对象方法,和类方法。服务器端响应由于xajax响应对象创建,该对象提供非常多的命令比如:给一个HTML元素赋 值,显示一个警告对话框等。还支持自定义脚本输出。所有特定浏览器代码(如使用XMLHttpRequest)都是抽象的,并且发送各种数据类型到服务器 端都非常容易实现。xajax提供多种配置选项目以便易于与现存web应用或框架相集成。它的Javascrīpt核心简洁明了,而且可以通过覆盖来支持 更多的高级Javascrīpt功能。

NanoAjax
NanoAjax是一个基于PHP5,面向对象(包括Javascrīpt 和PHP)的AJAX框架。它使用JSON作为数据交换格式。NanoAjax能够把多个虚拟请求归结到一个正真的请求当中。整个框架非常小,并且易于使 用。基于class的服务器端事件处理方式。

Pear:HTML_AJAX
Pear:HTML_AJAX是一个相当成熟的Ajax框架, 使用JSON进行数据传输。內建丰富的例子,包括留言板、登录、grab…等等。

Ajax Agent
Ajax Agent是一个非常易于使用(只需三行代码),并且非常强大的开源框架用于快速构建AJAX或RIA应用程序。支持复杂的数据类型比如: associated arrays与object。使用JSON(Javascrīpt Object Notation)作为数据交换格式。

AjaxAC
AjaxAC是一个PHP框架可用于开发/创建/生成AJAX应用程序。 特点如下:
1.所有应用程序代码全都包含在一个单独的class中(可以附带任何Javascrīpt包)。
2.PHP文件/HTML页面的调用非常简洁。
3.内置简化处理Javascrīpt事件的功能
4.内置创建和处理subrequest的功能。
5.可以自定义配置值,所以某些元素可以在运行期才被设置。
6.没有杂乱的Javascrīpt代码塞满所调用的Html代码,所有事件都是被动态附加上的。
7.易于与模板引擎相集成基于以上两点原因。
8.易于挂钩(hook)现有的PHP classe或MySQL数据库以便从subrequest返回数据。

AJASON
AJASON是一个基于PHP5的AJAX开发包。它具有以下特点:
1.PHP5与Javascrīpt代码完全采用面向对象开发。
2.从Javascrīpt异步调用PHP函数与对象方法。
3.能够在服务器与客户端之间交换复杂的数据类型像arrays与object (更确切地说是对象属性)。
4.使用Javascrīpt回调函数来处理服务端响应。
5.能够在客户端处理服务端的AJASON错误。

70个新鲜实用的JavaScript和Ajax技术

http://www.javaeye.com/news/6272

随着互联网的不断发展,网页的制作也充满了活力,开发者使用各种各样的技术使网页变得更加丰富,我们将为你推荐70个新鲜实用的JavaScript和Ajax技术。这是本文的第二部分,第一部分:70个新鲜实用的JavaScript和Ajax技术(上)

8.预览图像:实例和演示

imgPreview是一个jQuery 插件,可以让用户在点击链接前对图像进行预览。 如果图片已经被点击过,当再次悬浮的时候,就会即时出现,因为已经加载过。


用来查看网页中内嵌的照片和图像的完整大小图片,而不需要单独的网页加载。
Fancyzoom主要为用户提供一个简洁实用的图片展示过程。


这是一个不错的JavaScript做的图片展示,不需要使用Flash,可以随便的挑选局部放大,并且还可以分页。



9.文件上传:实例和演示

让您创建一个form,允许用户上传多个文件



FancyUpload是一个采用Flash与Ajax(MooTools)技术实现包含上传进度条的多文件上传组件,类似于SWFUpload。



UploadForm基于ext开发的文件上传组件。可以把多个文件添加到上传队列里面,也可以从队列里面移除不需要的文件,或都清空整个队列。




10.自动填充:实例和演示

一个独立的控件,拥有自动填充功能。

创建一个google推荐的filter,使用自动填充控制。


帮助页面用户的文本框输入, 显示提示信息


11.Lightbox:实例和演示

高可配置性的具有幻灯片功能Javascript库

Sexy Lightbox 2是一个精美的Lightbox克隆,不过它更小巧。 支持显示图片和HTML元素,并且完全兼容HTML, 也就是说它可以显示条目,页面,视频和所有其它你想要显示的东西。


一个jQuery插件,拥有许多强大的功能:自动调整,以适应图像的窗口;一个不错的阴影缩放效果;可通过自定义设置和CSS,内嵌内容显示等……




LightWindow 是一个高度可配置支持任何媒体显示的Lightbox灯箱效果,基于Prototype & script.aculo.us创建。它可以支持任何媒体内容显示,包括Flash, Quicktime, Youtube视频或者是一个外部网页。另外,它还拥有Gallery功能支持,模态窗口可定制的位置和自动调整大小以适合内容。




12.Form:实例和演示

FancyForm是一个基于mootools的强大选择框脚本,它为选择框提供最大的灵活性用来替找HTML原来面貌和功能的表单元素。其使用简单,且支持各大主流浏览器。


本教程可以帮助您在您选择的form上添加css类和默认值。

Form.Check是一个方便你处理客户端表单校验的MooTools插件。


fValidator是一个用于处理表单校验的JavaScript工具。



这个脚本增强了表单元素包括:单选按钮,复选框,文件上传,文本,文本框,图像,还有选择,提交和重置按钮。



13.Table:实例和演示

TableGear将获得的数据存入一个网页,它处理提交的数据都来自于AJAX的调用和传递,并将数据传回应用程序。


这是一个能够将标准Table转换成可排序Grid的JavaScript程序。它能够自动识别每列的数据类型,指定需要排序的列。



DrasticGrid 是一个以Ajax 为基础的可编辑DataGrid


sorttable 是一个js库用来对表格做排序,使用超级简单




14.Worth Checking Out:实例和演示

提供了一个字体的解决方案,你能使用任何字体显示,不管客户端是否安装了这种字体,且不使用Flash。




Starbox 可以帮助你很容易地建立各种各样的星形评分条。它基于prototype 框架,还可以简单地通过定制CSS 样式文件来改变默认和悬停时星星的颜色。


jQuery Alert Dialogs模拟了alert、confirm、prompt的效果,这样在IE上prompt不再出现烦人的阻挡讯息。


这个地图尽可能使用平滑的动态效果和清晰的图像。


这是一个用于让图片产生淡入淡出效果的jQuery插件。

此教程详细的说明了如何使用script.aculo.us来实现改变透明度的效果。



在这个指南中,您将会了解如何添加一些惊人的效果,鼠标悬停和鼠标离开时的效果。

这是一个可定制的jQuery editable plugin。当前它能够将任意不可编辑的标签(span、div、p…等)转换成可编辑的text input、password、textarea、下拉列表(drop-down list)等标签。你可以利用它的editableFactory对象来扩展添加自己所需的input type。




15.Ajax:实例和演示

这个实例可以告诉您如何验证用户名的是否可用。


它是一个jQuery插件,能够将一个页面中的所有链接转换成Ajax加载和提交请求。


Ajax文件上传插件让用户能够很方便地上传多个文件而无需刷新页面。此外,可以使用任何元素(图片,文字,按纽等)来触发文件选择窗口。

一个很炫的MooTools效果:点击任何Fx.Explode的元素,将会关闭屏幕。再次点击,又会奇迹般的重新出现。

了解如何在WordPress中创建这样的效果,当你单击删除文件是,该菜单项将会变为红色然后消失,这里将告诉您如何使用MooTools JavaScript实现这一功能。

10种JavaScript特效实例

  我们有三种主要的方法(从难到易):自己动手写脚本;使用类似于jQuery和mooTools的JavaScript框架(可以让编写代码变得更容易些);使用能工作于现有的JavaScript框架下的提前预置好的脚本或那种从头开始开发的创建者。这篇文章适合那些打算提高工作效率或不愿意从头开发脚本的人阅读。

这里收集了10种强大的且容易上手的JavaScript特效来改进您的网页站界面,从而得到更多的用户体验。这10种javaScript特效回味你的网站带来意想不到的视觉盛宴,而且安装和使用都比较容易。

1.GreyBox

JavaScript-greybox

  GreyBox允许你以模式窗口的形式运行其它网站(类似于弹出式窗口,但又不运行新的浏览器窗口).如果你的网站上有一些其他网站的导出链接,但你又不想让你的用户离开你的网站或不想让他们打开另一个浏览器窗口的话,这真的是一个很好的解决方案。使用GreyBox 非常简单。

  这里是关于GreyBox的关键页面:下载页面, 说明页面, 实例, 安装,和 高级用法(如果你是JavaScript高手,看完这个页面中的一些技巧说明,你就能扩展它的函数库了)

2.instant.js

JavaScript-instant

  instant.js 特效会为你的照片动态添加类似偏振(Polaroid-like)的效果(将照片倾斜并添加阴影和边框)。现在我们可以使用这个照片特效模拟Photoshop的数码照片处理了。

  这个脚本技术可以用于在你的网站上有很多照片,但又不想一个个手动处理的情况。(也许你会使用批量处理,但那只是建立于单一的动作下的,如调整尺寸、裁剪等…)

3.mooTable

JavaScript-mootable

  mooTable允许你为表格中的数据进行排序(不用刷新页面),利用DOM替代数据库的请求的新式排序方法。使用简单,仅需轻微的配置即可。

  这个脚本库需要mooTools框架的支持,你可以在这里下载。你还可以在论坛中的mootools板块寻找一些创建mooTable的方法,会有很多mootools开发者的反馈。

4.FancyForm

JavaScript-fancyform

  FancyForm可以取代单调乏味的表单控件如单选按钮和复选框。基本的使用仅需两步:(1)在页面中调用JavaScript文件 (2)为你的表单控件指定类名,如复选框指定class=”checked” 或 class=”unchecked”,单选框指定class=”selected” 和 class=”unselected”。非常不显眼的javaScript.

  该脚本需要mootools的支持(版本1.1)

5.image menu

Javascipt-image-menu

  image menu,使用phatfusion开发而成。非常漂亮的横向菜单,当你悬停在某个菜单项上时,图片就会扩展开。

  你可以使用这个技术为照片的隐藏部分使用蒙太奇效果,但当用户将鼠标悬停在上面是就会显示全部。

  该脚本需要mootools的支持(版本1.1)

6.AmberJack: Site Tour Creator

JavaScript-amberjack

  这是一个轻量级的JavaScipt库,允许你为网站添加实施快速游览。允许用户事实的在浏览每个页面的时候查看简短的描述。

  您可以利用这个技术来演示如何让用户使用这个网站,用户只需要点击下一步的按钮,就能了解需要做的每一步。

7.ImageFlow

javascript-imageflow

  灵感来源于iPod的”coverflow”,ImageFlow是一个用来展示图片集合的特效。用户可以拖动下方的滚动条来控制图片的显示。

  用户点击图片以后,会转向到现实清晰大图的网页。

8.ShadowBox.js Media viewer

shadowbox

  ShadowBox是”完全使用JavaScipt编写的跨浏览器、跨平台、代码简洁且文档完整的媒体查看应用程序”(怎么样?一口气说下来这么多优点。)

  ShadowBox区别于其它Model Box(如Lightbox 2)的地方是,它还支持除图片以外的很多其它文件类型,如flash视频、内嵌式youtube视频、Apple.com预告片和网页(这样能让用户不用转到另一个页面就能完成登录、注册)。这是很有价值的脚本。

9.TJPzoom 3 – image magnifier

TJPzoom可以让你将某个高清图片的局部放大显示。按下并拖动鼠标的话,可以改变放大区域的尺寸。

10.mootools Tips

  mootools Tips是mooTools框架的一部分,它可以让你为用户提供一个高度可配置的工具提示,当用户将鼠标悬停在某个链接或图片上时,一些关于这个元素的附加的提示信息就会在屏幕上显示出来。

  一些可以调节的方法:CSS 样式(可以修改默认的黑背景白文字)、渐变速度、工具提示在屏幕上显示的风格、你希望工具提示显示多久。这个脚本需要mootools框架的支持。

英文原文:10 JavaScript Effects to Boost Your Website’s Fanciness Factor
翻译原文:10种JavaScript特效实例让你的网站更吸引人

firefox中用js提交表单

1.document.forms.from.submit();
document.form.sumbit();
document.form.submit.click();
this.form.submit();
以上几种形式的js表单提交在firefox浏览器下是不起作用的
2.必须遵循w3c标准:
1).获得form时应使用getElementById()方法
2).用.submit()方法提交表单
3).button的name/id绝对不能命名为”submit”
4).form中所有的组件(按钮,文本框等)的name/id也不能命名为”submit”

# 当提交按钮的name 或者 id为submit时候,用js 提交表单,表单名.submit()时候会报一个错误,提示对象不支持此属性或办法。
解决方法是修改提交按钮的 name 或者 id 不要与 submit或者action同名即可。
那么,请问为什么 当提交按钮的 name 或者 id为submit或者 action的时候 js提交表单会报错呢?这难道是 一个bug?
高手们请指教。。。。

因为”表单名.submit()提交”这种写法本身就是不符合W3C标准的规定的,在IE下没有报错因为IE支持这种写法,但是如果在FF下就会报错,要写成”document.getElementById(‘form id’).submit()”的?

# 我在项目中发现<input type=”submit”/>与<img src=”123.gif” onclick=”submit();”>
得出的效果截然不同, 谁能告诉我这两着有合不同
我又如何能用图片来替代原有的提交按钮

<input type=”submit” />是说这是一个按钮,它的是一个提交按钮.当点击它时,它会自动将它所在的表单进行提交.