JavaScript Title、alt提示(Tips)实现源码解读_javascript技巧
而对于图片标签img也有一个alt属性可以起到类似的作用。但很显然这种提示框太单调了,为此有人用JavaScript实现了漂亮的提示框效果,这种效果常用在WEB游戏中,其中下图的网易邮箱与迅雷影视页面就用到这种效果,虽然彼此实现效果有些差异,但整体实现思路是不变的。为了方便大家了解实现的细节,以方便定制自己想要的效果,我上网找了一段不错的源码,并对其进行了详细的注释,希望对大家有帮助。
/***********************************************
一个JavaScript Title、alt提示(Tips)源码解读
代码注释:唐国辉
作者博客:http://webflash.cnblogs.com
***********************************************/
//定义getElementById快捷方式
function $(obj)
{
if(typeof(obj)=='object')
{
return obj;
}
else
{
return document.getElementById(obj);
}
}
//定义document.write快捷方式,代替复杂的DOM操作
function $P(str)
{
document.write(str);
}
//脚本错误屏蔽
window.onerror=function ()
{
return true;
};
/*
定义变量:
pltsPop(提示内容文字,来自对象的alt或title属性,不包含HTML)
toolTip(提示内容DOM对象,即后面定义的content变量)
pltsPoptop(上方提示标题DOM对象)
pltsPopbot(下方提示标题DOM对象)
topLeft(左上角提示标题DOM对象)
botLeft(左下方提示标题DOM对象)
topRight(右上角提示标题DOM对象)
botRight(右下方提示标题DOM对象)
*/
var pltsPop,toolTip,pltsPoptop,pltsPopbot,topLeft,botLeft,topRight,botRight;
//设置提示窗口相对提示对象的位置偏移量
var pltsoffsetX=10;
var pltsoffsetY=15;
var pltsTitle="";
//创建一个绝对定位的隐藏图层
$P('');
//把刚创建的层对象赋值给一个变量,此语句一定要出现在层创建之后
var pltsTipLayer=$('pltsTipLayer');
//定义鼠标移到对象上时处理函数,主要提取alt或title属性值,并初始化提示框HTML及样式
function PltsMouseOver(ev)
{
//兼容不同浏览器的事件和对象获取
var Event=window.event||ev;
var o=Event.srcElement||Event.target;
//如果对象alt属性存在并且不等于空,就把它的值存到dypop属性,并清空当前alt内容
if(o.alt!=null&&o.alt!="")
{
o.dypop=o.alt;
o.alt="";
}
//如上,对具有title属性的对象作同样的判断和处理,清空title属性值是让对象默认的提示效果失效
if(o.title!=null&&o.title!="")
{
o.dypop=o.title;
o.title="";
}
pltsPop=o.dypop;
if(pltsPop!=null&&pltsPop!=""&&typeof(pltsPop)!="undefined")
{
//把上面创建的提示层显示出来,暂时移到左边很远,虽然显示但用户看不到
pltsTipLayer.style.left=-1000;
pltsTipLayer.style.display='';
/*
格式化提示信息,把其中的\n换成
,比如像下面这样定义title值,显示出来会是作者和性别各一行,因为Tom和Sex之间有 :
*/
var Msg=pltsPop.replace(/\n/g,"
");
Msg=Msg.replace(/\0x13/g,"
");
//定义正则表达式检查提示内容是否含有类似这样的内容“{提示标题}”,而且{}和{{}是排除在处的,如果没有就默认用“简介”作为提示标题
var re=/\{(.[^\{]*)\}/ig;
if(!re.test(Msg))
{
pltsTitle="";
}
else
{
re=/\{(.[^\{]*)\}(.*)/ig;
//提取{}中的内容
pltsTitle=Msg.replace(re,"$1")+" ";
//把{内容},包括{}在内的内容替换为空,得到最终提示正文的内容
re=/\{(.[^\{]*)\}/ig;
Msg=Msg.replace(re,"");
}
//定义提示框内容Html与Style,并把获得的相关内容放到对应变量中
var content="
-
"+pltsTitle+"
"+pltsTitle+"
- "+Msg+"
-
"+pltsTitle+"
"+pltsTitle+"
pltsTipLayer.innerHTML=content;
toolTip=$("toolTip");
pltsPoptop=$("pltsPoptop");
pltsPopbot=$("pltsPopbot");
topLeft=$("topLeft");
botLeft=$("botLeft");
topRight=$("topRight");
botRight=$("botRight");
//设置提示框宽度,它的大小是提示框自身大小和浏览器可见窗口大小一半两者中的最小值,即在浏览器窗口小过提示框本身宽度后,会自动调整提示框大小到一个新的宽度
toolTip.style.width=Math.min(pltsTipLayer.clientWidth,document.documentElement.clientWidth/2.2)+"px";
}
else
{
pltsTipLayer.innerHTML='';
pltsTipLayer.style.display='none';
}
}
//定义鼠标在对象上移动时处理函数,每移动一像素触发一次事件
function PltsMouseMove(ev)
{
if(pltsTipLayer.innerHTML=='')
return true;
var Event=window.event||ev;
//获取光标当前X、Y坐标
var MouseX=Event.clientX;
var MouseY=Event.clientY;
//获取提示框宽高度
var popHeight=pltsTipLayer.clientHeight;
var popWidth=pltsTipLayer.clientWidth;
//如果当前光标Y坐标+提示框Y轴偏移量+提示框高度>当前窗口可见高度,一般处理窗口中下方要提示的对象,比如页脚有一个链接需要提示时就会是这种情况,此时考虑使用下方标题
if(MouseY+pltsoffsetY+popHeight>document.documentElement.clientHeight)
{
//提示框显示在要提示对象上方时需要一个额外值popTopAdjust作为提示框最终定位的依据
popTopAdjust=-popHeight-pltsoffsetY*1.5;
pltsPoptop.style.display="none";
pltsPopbot.style.display="";
}
else
{
popTopAdjust=0;
pltsPoptop.style.display="";
pltsPopbot.style.display="none";
}
//判断使用左标题还是右标题
if(MouseX+pltsoffsetX+popWidth>document.documentElement.clientWidth)
{
popLeftAdjust=-popWidth-pltsoffsetX*2;
topLeft.style.display="none";
botLeft.style.display="none";
//下面两个标题都显示,其实最终看到的只有一个位置上的标题,因为topRight是pltsPoptop的子元素,如果pltsPoptop不显示,topRight显示也是看不到的,botLeft同理
topRight.style.display="";
botRight.style.display="";
}
else
{
popLeftAdjust=0;
topLeft.style.display="";
botLeft.style.display="";
topRight.style.display="none";
botRight.style.display="none";
}
//把综合处理得到的提示框最终位置值设置到对象,其中scrollTop是网页被卷去的高度,因为style.top是相对整个文档的而不是浏览器窗口,所以要算上滚动隐藏的高度,scrollLeft同理
pltsTipLayer.style.left=MouseX+pltsoffsetX+document.documentElement.scrollLeft+popLeftAdjust+"px";
pltsTipLayer.style.top=MouseY+pltsoffsetY+document.documentElement.scrollTop+popTopAdjust+"px";
return true;
}
//定义事件绑定函数
function PltsInit()
{
document.onmouseover=PltsMouseOver;
document.onmousemove=PltsMouseMove;
}
//调用事件绑定函数
PltsInit();
调用方法:把上面的代码存到一个外部独立的JS文件中,然后在网页页面中包含这个JS文件,最后给需要提示的对象加上title属性,图片可以加alt属性就可以了。举例:缩写标题 或

相关链接:
1、http://www.cnblogs.com/czh-liyu/archive/2007/12/30/1021146.html
2、http://boxover.swazz.org
3、http://blog.csdn.net/lanmao100/archive/2008/10/31/3191767.aspx

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



Apakah yang perlu saya lakukan jika Google Chrome menggesa bahawa kandungan tab ini dikongsi? Apabila kami menggunakan Google Chrome untuk membuka tab baharu, kadangkala kami menemui gesaan bahawa kandungan tab ini sedang dikongsi. Jadi, apakah yang sedang berlaku? Biarkan tapak ini menyediakan pengguna dengan pengenalan terperinci kepada masalah Google Chrome yang menggesa kandungan tab ini dikongsi. Google Chrome menggesa bahawa kandungan tab ini sedang dikongsi Penyelesaian: 1. Buka Google Chrome Anda boleh melihat tiga titik di sudut kanan atas pelayar "Sesuaikan dan kawal Google Chrome". ikon itu. 2. Selepas mengklik, tetingkap menu Google Chrome akan muncul di bawah, dan tetikus akan beralih ke "Lagi Alat"

alt+= ialah kekunci pintasan untuk penjumlahan cepat Kaedah menggunakan kekunci pintasan "alt+=" ialah: 1. Buka fail jadual Excel 2. Buat data berangka 3. Gunakan tetikus untuk memilih data yang hendak dijumlahkan; 4. Tekan kekunci "alt+=" ” untuk menjumlahkan data yang dipilih.

Dalam iOS 17, Apple telah merombak keseluruhan pilihan nada dering dan nada teksnya, menawarkan lebih daripada 20 bunyi baharu yang boleh digunakan untuk panggilan, mesej teks, penggera dan banyak lagi. Begini cara untuk melihat mereka. Banyak nada dering baharu lebih panjang dan berbunyi lebih moden daripada nada dering lama. Ia termasuk arpeggio, patah, kanopi, kabin, kicauan, subuh, berlepas, dolop, perjalanan, cerek, merkuri, galaksi, quad, jejari, pemulung, anak benih, tempat berteduh, taburan, langkah, masa cerita , goda, senget, terbentang dan lembah. Refleksi kekal sebagai pilihan nada dering lalai. Terdapat juga 10+ nada teks baharu yang tersedia untuk mesej teks masuk, mel suara, makluman mel masuk, makluman peringatan dan banyak lagi. Untuk mengakses nada dering dan nada teks baharu, pertama sekali, pastikan iPhone anda

Cara mengendalikan pengesahan dan gesaan input pengguna dalam Vue Mengendalikan pengesahan dan gesaan input pengguna dalam Vue ialah keperluan biasa dalam pembangunan bahagian hadapan. Artikel ini akan memperkenalkan beberapa teknik biasa dan contoh kod khusus untuk membantu pembangun mengendalikan pengesahan dan gesaan input pengguna dengan lebih baik. Pengesahan menggunakan sifat yang dikira Dalam Vue, anda boleh menggunakan sifat yang dikira untuk memantau dan mengesahkan input pengguna. Anda boleh menentukan atribut yang dikira untuk mewakili nilai yang dimasukkan oleh pengguna dan melaksanakan logik pengesahan dalam atribut yang dikira. Berikut ialah contoh: data(){

Apl Baidu Tieba menggesa bahawa operasi adalah terlalu kerap Gesaan ini biasanya untuk mengekalkan operasi biasa dan pengalaman pengguna platform untuk mengelakkan spam skrin berniat jahat, spam pengiklanan dan tingkah laku lain yang tidak sesuai, anda boleh membaca tutorial yang dikongsi oleh editor. Apl Baidu Tieba menggesa bahawa operasi itu terlalu kerap Berkongsi cara menanganinya 1. Apabila sistem menggesa [Operasi terlalu kerap], kami perlu menunggu seketika, anda boleh melakukan sesuatu yang lain dahulu. Secara amnya, selepas menunggu seketika, mesej gesaan ini akan Ia akan hilang secara automatik dan kita boleh menggunakannya seperti biasa. 2. Jika selepas menunggu lama, ia masih memaparkan [Operation Too Frequent], kita boleh cuba pergi ke Tieba Emergency Bar, Tieba Feedback Bar dan Tieba rasmi yang lain, pos untuk melaporkan fenomena ini dan minta kakitangan rasmi menyelesaikannya. 3.

Tajuk ialah makna yang mentakrifkan tajuk halaman web Ia terletak dalam teg dan teks yang dipaparkan dalam bar tajuk pelayar adalah sangat penting untuk pengoptimuman enjin carian dan pengalaman pengguna halaman web. Apabila menulis halaman web HTML, anda harus memberi perhatian kepada menggunakan kata kunci yang berkaitan dan penerangan yang menarik untuk menentukan elemen tajuk untuk menarik lebih ramai pengguna mengklik dan menyemak imbas.

Apabila bermain permainan, mesej "Pemandu monitor telah berhenti bertindak balas dan telah dipulihkan" tiba-tiba muncul. Pemacu paparan telah berhenti bertindak balas dan telah pulih Ini bermakna pemacu paparan dalam sistem telah mengalami situasi yang tidak normal dan tidak boleh berfungsi seperti biasa, menyebabkan paparan menjadi tidak bertindak balas atau mempunyai skrin hitam. Sebab biasa: 1. Pantau ralat pemandu: Mungkin terdapat ralat logik program atau ralat penghantaran data dalam pemandu, menyebabkan pemandu gagal berfungsi dengan baik. 2. Konfigurasi perkakasan tidak mencukupi: Konfigurasi perkakasan komputer tidak mencukupi untuk memenuhi keperluan aplikasi berprestasi tinggi, mengakibatkan masalah seperti sistem berhenti seketika dan ketinggalan. 3. Kerosakan fail sistem: kerosakan pada fail sistem komputer

Tajuk dalam HTML memaparkan teg tajuk halaman web, yang membolehkan penonton mengetahui perkara utama halaman semasa, jadi setiap halaman web harus mempunyai tajuk yang berasingan.
