网上有一个很旧的代码,只能兼容IE。并且不符合W3C标准。所以也只能在IE下使用。
现在上的是一个兼容IE和FX,符合W3C标准,适用于所有浏览器。绝对原创,版权不限制,可以任意复制、传播、使用。但要注明 引用自“落伍者论坛”。
===============================
技术难点一: 如何控制 EVENT
技术难点二:如何占用最小的本地CPU资源,使网页平稳、流畅显示。
技术难点三:兼容目前的浏览器,并可作更多的扩展应用。
技术难点四:优化使用主动模式。
(什么是主动模式?主动模式就是程序主动去获取达到要求的TITLE标签,自动生成。与传统的区别是主动模式不需要在HTML页面中对每个TITLE都增加 JAVASCRIPT语句。例如 showtitle(event) 也不需要增加 on事件,例如 onmouseover onmouseout 等。)
===============================
为什么要优化TITLE ?
一、传统TITLE显示有延时,而优化后可以马上显示。
二、传统TITLE只能普通普通文本,而优化后TITLE可以含有HTML标签,包括超链和贴图。
三、传统模式的界面依赖浏览器默认,优化后可以通过CSS进行任何美化工作。
================================
扩展一:
增加鼠标位置智能识别。不需要使用on事件(onmouseover onmouseout),使鼠标移出TITLE后,TITLE不会马上消失,这样的好处是TITLE里面的超链可以对击。
源代码:(HTML部分)
其中大家看到只需要在BODY 上增加一个onmousemove=”mk_title_display_by_css();
而HTML下,TITLE只是很简洁,没有任何JS语句。
下面说说JS部分:
////////////////////////////////////////////////////////////////////////1、
JS部分相当简单,原理是建立一个DIV ,并将ID指定为 mk_title_display_by_css ,并用CSS进行一些必要美化。
2、
通过 theEvent = window.event || arguments.callee.caller.arguments[0]; 语句,进行IE和FX的识别。
3、
src = theEvent.target || theEvent.srcElement; 前者是FX,后者是IE。这种写法在FX和IE的DEBUG模式下都不会报错。
4、
stitle=src.title; 获取所有当前页面的TITLE标签里的内容。并将内容重写入DIV里面,这样就可以在TITLE里贴图和放超链了。
5、
为了程序的简洁和重复。使用了本人原创的缩写方法。请查阅:引用:
获得当前ID的缩写(相当于prototype 中的 $() ,使用G能有效防止PHP模版中,带有美元号产生与一些常用模版系统不兼容
)
G()
将内容显示在指定的ID上。VALUE和HTML均可。
N(objid, msg, revtype)
显示,隐藏指定ID
D(objid,dtype)
更改当前ID的CLASS样式。整段样式替换,而不是样式中每一个定义替换。
CC(objid,classname)
DEBUG 用的,返回指定对象的值和属性。
$E(the_message)
透明化指定ID,自动识别IE,MOZ,OPERA,兼容CSS 3.0SSS标准。
F(objid,opacity)详细可以点击浏览:
一个功能强大的JS类,体积小巧,实现功能多多
这个类,体积小巧。但是功能强大。能实现各种常用的功能。
本类是原创类,版权所有!!你可以免费使用,传播,发布,请保留版权信息。
完美支持各种浏览器IE,MOZ,FOX,OPERA等等。
这个类最大的好处,就是简化HTML页面。一个复杂的应用,仅需要几句语句的组合调用即可。
1、AJAX
AAL(method, url, asynchronous, waitid, returnid, returntype, loading, revtype)
2、获得当前ID的缩写(相当于prototype 中的 $() ,使用G能有效防止PHP模版中,带有美元号产生与一些常用模版系统不兼容)
G()
3、将内容显示在指定的ID上。VALUE和HTML均可。
N(objid, msg, revtype)
4、显示,隐藏指定ID
D(objid,dtype)
5、更改当前ID的CLASS样式。整段样式替换,而不是样式中每一个定义替换。
CC(objid,classname)
6、DEBUG 用的,返回指定对象的值和属性。
$E(the_message)
7、透明化指定ID,自动识别IE,MOZ,OPERA,兼容CSS 3.0SSS标准。
F(objid,opacity)
8、返回鼠标当前坐标,用于在鼠标当前位置显示特定ID的后续应用
MM(event)
9、指定ID在当前网页的坐标,用于在表单,提示内容旁弹出菜单。
PP(objid,objid2)
10、在页面生成一个新对象,可以是DIV,P,IFRAME。能实现JS的各种高级应用。
CE = function(t, a, y, x)
=================
放在HTML内,或者SRC外部调用均可
var P = {
V: ’0.0.5_alpha’,
B: {
IE: !!(window.attachEvent && !window.opera),
Opera: !!window.opera,
Gecko: navigator.userAgent.indexOf(‘Gecko’) > -1 && navigator.userAgent.indexOf(‘KHTML’) == -1
},
I: IMGDIR + ’./img/’,
OC: ’olddata’,
NC: ’newdata’,
X: 0,
Y: 0
};
////////////////////////////////////////////////////////////////////////////////
var A = new Object;
var A = {
waitid: ”,
returnid: ”,
daily: ’1000′,
loading: ’loadding…’
}
///////////////////////////////////////////////////////////////////////////////
A.C = function (){
var request = false;
if(window.XMLHttpRequest){
return new XMLHttpRequest();
} else if(window.ActiveXObject){
var xmlHttp_link = false;
var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLDOM', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'Msxml2.XMLHTTP'];
if(!xmlHttp_link){
for(var i=0;i<versions.length;i++){
try{
new ActiveXObject(versions);
xmlHttp_link = versions;
break;
}catch(oError){;}
}
//FOR END
}
//IF END
if(xmlHttp_link){
return new ActiveXObject(xmlHttp_link);
}
}
}
A.C = A.C();
////////////////////////////////////
A.H = function(){
var data;
if(A.C.readyState == 4 && A.C.status == 200) {
if (A.returntype ==’HTML’){
data =A.C.responseText;
}else if (A.returntype
== ’XML’){
data =A.C.responseXml;
}else {
data = ’error’ ;
}
A.returndata = data;
A.U();
}else{
A.S();
}
}
/////////////////////////////////
A.S = function() {
if(A.waitid && (A.C.readyState != 4 || A.C.status != 200)) {
N(A.waitid, ’<span><img src=”‘ + P.I + ’/loading.gif” alt=”loading”> ’ + A.loading + ’</span>’);
}
}
////////////////////////////////
A.L = function(method, url, asynchronous){
if (A.waitid){D(A.waitid,’block’);A.S();}
if (A.returnid){CC(A.returnid, P.NC);}
A.C.open(method, url, asynchronous);
if(method==”post”)A.C.setRequestHeader(“Content-Type”,”application/x-www-form-urlencoded”);
A.C.send(method==’post’? url:null);
A.C.onreadystatechange = A.H;
}
///////////////////////////////////
A.U = function (){
if (A.waitid){setTimeout(function(){D(A.waitid,’none’);},A.daily);}
if (A.returnid){setTimeout(function(){CC(A.returnid, P.OC);N(A.returnid, A.returndata, A.revtype);},A.daily);}
}
/////////////////////////////////////////////////////////////////////////////////
function AAL(method, url, asynchronous, waitid, returnid, returntype, loading, revtype){
method = method == ’post’ ? ’post’ : ’get’;
asynchronous = asynchronous ==’true’ ? ’true’ : ’fales’;
A.revtype = revtype ? revtype : ’HTML’ ; // innerHTML OR value
A.returntype = returntype ? returntype : ’HTML’; // responseHTML OR responseXML
A.loading = loading ? loading : A.loading;
A.waitid = waitid ? waitid : A.waitid;
A.returnid = returnid ? returnid : A.returnid;
return A.L(method, url, asynchronous);
/*
if (method==’get’){
return A.L.GET(url, asynchronous);
}else{
return A.L.POST(url, asynchronous);
}
*/
}
////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////
function G() {
var elements = new Array();
var arr = arguments.length;
for (var i = 0; i < arr; i++) {
var element = arguments;
if (typeof element == ’string’) element = document.getElementById(element);
if (arr == 1) return element;
elements.push(element);
}
return elements;
}
/////////////////////////////////////////////////////////////////////////////////
function N(objid, msg, revtype){
//innerHTML objid,msg
var msg = msg;
//if (msg ==” || msg == undefined || typeof(msg) == ’undefined’){
//D(objid,’none’);
//msg = ”;
//}
if (revtype ==” || revtype == undefined || typeof(revtype) == ’undefined’ || revtype == ’HTML’){
G(objid).innerHTML = msg ;
}else{
G(objid).value = msg ;
 
; }
}
////////////////////////////////////////////////////////////////////////////////
function D(objid,dtype){
if (dtype == ’block’){
G(objid).style.display = ’block’;
}else if (dtype==’none’){
G(objid).style.display = ’none’;
}else {
G(objid).style.display = (G(objid).style.display == ” || G(objid).style.display == ’block’) ? ’none’ : ’block’;
}
}
////////////////////////////////////////////////////////////////////////////////
function CC(objid,classname){
G(objid).className = classname;
}
////////////////////////////////////////////////////////////
function $E(the_message){
alert(“|type=” + typeof the_message + ”\n\n|data=” + the_message);
}
///////////////////////////////////////////////////////////////////////////////
function F(objid,opacity){
if (opacity>100 || opacity<10){
opacity = 30;
}
if (P.B.IE == true){
G(objid).style.filter = ’alpha(opacity=’ + opacity + ’)'; //IE
}else if(P.B.Opera == true){
G(objid).style.opacity = (opacity/100); //OPERA AND CSS 3
}else if(P.B.Gecko == true){
G(objid).style.MozOpacity = (opacity/100);//FX
}else{
return false;
}
}
//////////////////////////////////////////////////////////////////////////////
function PP(objid,objid2){
var ttop = G(objid).offsetTop; //TT控件的定位点高
var tleft = G(objid).offsetLeft; //TT控件的定位点宽
var thei = G(objid).clientHeight; //TT控件本身的高
alert(ttop +’ - ’+ thei +’ = ’+ tleft);
G(objid2).style.left =tleft;
G(objid2).style.top=ttop+thei+10;
}
function MM(event){
var mouse_x;
var mouse_y;
var xx;
var yy;
if (self.pageYOffset || self.pageXOffset) {
yy = self.pageYOffset;
xx = self.pageXOffset;
} else if (document.documentElement && document.documentElement.scrollTop || document.documentElement.scrollLeft ){
// Explorer 6 Strict
yy = document.documentElement.scrollTop;
xx = document.documentElement.scrollLeft;
} else if (document.body) {
// all other Explorers
yy = document.body.scrollTop;
xx = document.body.scrollLeft;
}
if (P.B.IE){
mouse_x = window.event.clientX;
mouse_y = window.event.clientY;
}else{
mouse_x = event.clientX;
mouse_y = event.clientY;
}
P.X = parseInt(xx + mouse_x + 10);
P.Y = parseInt(yy + mouse_y + 10);
//alert(‘ x= ’+ mouse_x +’ y= ’+mouse_y);
}
//var CE = new Object;
CE = function(t, a, y, x) {
var e = document.createElement(t);
if (a) {
for (var k in a) {
if (k == ’class’) e.className = a[k];
else if (k == ’id’) e.id = a[k];
else e.setAttribute(k, a[k]);
}
}
if (y) { for (var k in y) e.style[k] = y[k]; }
if (x) { e.appendChild(document.createTextNode(x)); }
return e;
}
/*
调用形式,可以创建iframe,div,p等,要注意有些属性并不适合某些对象。
var newElement = CE(‘div’,
{‘class’: ’newDivClass’, id: ’newDiv’, name: ’newDivName’},
{width:&
nbsp;’300px’, height:’200px’, margin:’0 auto’, border:’1px solid #DDD’},
’這是存在於在新建立標籤 div 中的文字。’);
newElement.src=’test.htm’; //如果不能直接调用,使用外部赋值
newElement.style.display =’block’; //同上
G(‘ajax_cart’).appendChild(newElement); //创建的对象显示。将属性追加到前面的ID对象。
*/
</script>
===========================================
全文完。
因为是HTML+JS 所以直接另存为就可以演示,就没必要再贴个网址放演示了。






最新评论
春节快乐啊^_^兄弟
呵呵,路过,顶一下。
老衲已阅
不错的站,路过看下
来拜访啦,呵呵,留名纪念
闲逛到此,留下印记。顶一下。
路过~~留痕
多少支持一下