用ajax實(shí)現(xiàn)預(yù)覽鏈接可以看到鏈接的內(nèi)容
首先先看實(shí)現(xiàn)代碼
html代碼部分
<!DOCTYPE html> <html> <head> <title>Previewing Links</title> <link rel="stylesheet"href="script05.css" rel="external nofollow" > <script src="script05.js"></script> </head> <body> <h2>A Gentle Introduction to JavaScript</h2> <ul> <li><a href="jsintro/2000-08.html" rel="external nofollow" >August column</a></li> <li><a href="jsintro/2000-09.html" rel="external nofollow" >September column</a></li> <li><a href="jsintro/2000-10.html" rel="external nofollow" >October column</a></li> <li><a href="jsintro/2000-11.html" rel="external nofollow" >November column</a></li> </ul> <div id="previewWin"> </div> </body> </html>
這個(gè)CSS設(shè)置預(yù)覽彈出窗口的樣式
#previewWin {
background-color: #FF9;
width: 400px;
height: 100px;
font: .8em arial, helvetica, sans-serif;
padding: 5px;
position: absolute;
visibility: hidden;
top: 10px;
left: 10px;
border: 1px #CC0 solid;
clip: auto;
overflow: hidden;
}
#previewWin h1, #previewWin h2 {
font-size: 1.0em;
}
這個(gè)JavaScript進(jìn)行服務(wù)器請(qǐng)求并且顯示彈出窗口
window.onload = initAll;
var xhr = false;
var xPos, yPos;
function initAll() {
var allLinks = document.getElementsByTagName("a");
for (var i=0; i< allLinks.length; i++) {
allLinks[i].onmouseover = getPreview;
}
}
function getPreview(evt) {
if (evt) {
var url = evt.target;
}
else {
evt = window.event;
var url = evt.srcElement;
}
xPos = parseInt(evt.clientX);
yPos = parseInt(evt.clientY);
if (window.XMLHttpRequest) {
xhr = new XMLHttpRequest();
}
else {
if (window.ActiveXObject) {
try {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e) { }
}
}
if (xhr) {
xhr.onreadystatechange = showContents;
xhr.open("GET", url, true);
xhr.send(null);
}
else {
alert("Sorry, but I couldn't create an XMLHttpRequest");
}
}
function hidePreview() {
document.getElementById("previewWin").style.visibility = "hidden";
}
function showContents() {
var prevWin = document.getElementById("previewWin");
if (xhr.readyState == 4) {
if (xhr.status == 200) {
prevWin.innerHTML = xhr.responseText;
}
else {
prevWin.innerHTML = "There was a problem with the request " + xhr.status;
}
prevWin.style.top = yPos+2 + "px";
prevWin.style.left = xPos+2 + "px";
prevWin.style.visibility = "visible";
prevWin.onmouseout = hidePreview;
}
}
分析:
1.
var allLinks = document.getElementsByTagName("a");
for (var i=0; i< allLinks.length;i++) {
allLinks[i].onmouseover = getPreview;
}
這是initAll()函數(shù)的內(nèi)容,它遍歷頁(yè)面上的所有鏈接,并且在每個(gè)鏈接上添加onmouseover事件
處理程序。這個(gè)事件處理程序?qū)ⅲ阆旅鎸⒖吹降模┳x取目標(biāo)頁(yè)面并且向(可能的)訪問(wèn)者顯示預(yù)覽。
2.
if (evt) {
var url = evt.target;
}
else {
evt = window.event;
var url = evt.srcElement;
}
xPos = parseInt(evt.clientX);
yPos = parseInt(evt.clientY);
在getPreview()中,首先需要查明要讀取哪個(gè)文件,這就要查看事件的屬性。根據(jù)訪問(wèn)者使用的
瀏覽器不同,URL保存在evt.target或window.event.srcElement中。獲得了URL之后,就可以獲得
鼠標(biāo)的x和y位置供以后使用。
3.
function hidePreview() {
document.getElementById ("previewWin").style.visibility = "hidden";
}
如果打算顯示預(yù)覽,將需要再次隱藏它,對(duì)嗎?hidePreview()函數(shù)的作用是將預(yù)覽窗口的可見(jiàn)性
重新設(shè)置為隱藏。
4.
var prevWin = document.getElementById("previewWin");
if (xhr.readyState == 4) {
使用Ajax讀取文件之后,現(xiàn)在進(jìn)入了showContents()函數(shù)。我們將previewWin元素存儲(chǔ)在prevWin
中以備后用。當(dāng)xhr.readyState為4時(shí),就該顯示預(yù)覽了。
5.
if (xhr.status == 200) {
prevWin.innerHTML = xhr.responseText;
}
else {
prevWin.innerHTML = "There was a problem with the request " + xhr.status;
}
prevWin.style.top = yPos+2 + "px";
prevWin.style.left = xPos+2 +"px";
prevWin.style.visibility ="visible";
prevWin.onmouseout = hidePreview;
如果一切正常,那么xhr.status為200,而且我們希望放在prevWin.innerHTML中的數(shù)據(jù)已經(jīng)存
在于xhr.responseText中了。如果出現(xiàn)了問(wèn)題,就在prevWin.innerHTML中放一個(gè)錯(cuò)誤消息。
在此之后,需要查明要在哪里顯示預(yù)覽窗口,也就是當(dāng)前的鼠標(biāo)x和y坐標(biāo)。這個(gè)窗口是一個(gè)彈
出窗口,所以將它放在觸發(fā)該調(diào)用的當(dāng)前鼠標(biāo)位置向下和向右一點(diǎn)兒的地方(向下和向右各2像素)。
最后,將prevWin設(shè)置為可見(jiàn),并且讓JavaScript知道,當(dāng)鼠標(biāo)離開(kāi)預(yù)覽窗口時(shí),應(yīng)該隱藏prevWin。
- jQuery AjaxUpload 上傳圖片代碼
- php+ajax無(wú)刷新上傳圖片實(shí)例代碼
- swfupload ajax無(wú)刷新上傳圖片實(shí)例代碼
- jquery的ajaxSubmit()異步上傳圖片并保存表單數(shù)據(jù)演示代碼
- JQuery+ajax實(shí)現(xiàn)批量上傳圖片(自寫(xiě))
- Jquery ajaxsubmit上傳圖片實(shí)現(xiàn)代碼
- AJAX實(shí)現(xiàn)圖片預(yù)覽與上傳及生成縮略圖的方法
- Ajax 上傳圖片并預(yù)覽的簡(jiǎn)單實(shí)現(xiàn)
- 基于HTML5的可預(yù)覽多圖片Ajax上傳
- Ajax上傳圖片及上傳前先預(yù)覽功能實(shí)例代碼
相關(guān)文章
如何手寫(xiě)Ajax實(shí)現(xiàn)異步刷新
這篇文章主要教大家如何手寫(xiě)Ajax實(shí)現(xiàn)異步刷新,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
一個(gè)偽ajax圖片上傳代碼實(shí)現(xiàn)示例
這篇文章主要介紹了自己寫(xiě)的一個(gè)偽ajax圖片上傳實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-03-03
菜鳥(niǎo)蔡之Ajax復(fù)習(xí)第三篇(Ajax之無(wú)刷新登錄)
無(wú)刷新登錄大家也許沒(méi)寫(xiě)過(guò),但是一定都是聽(tīng)說(shuō)過(guò)的,很早以前就想用這個(gè)小技術(shù)在自己做的小項(xiàng)目中用一把了,但都沒(méi)有付出過(guò)實(shí)踐,在網(wǎng)上查也沒(méi)有查到具體完整的代碼,在這里,今天菜鳥(niǎo)蔡也來(lái)試了一把,獻(xiàn)丑了,希望對(duì)初學(xué)的童鞋有點(diǎn)幫助2012-11-11
用AJAX實(shí)現(xiàn)的無(wú)刷新的分頁(yè)實(shí)現(xiàn)代碼(asp.net)
最近學(xué)習(xí)了AJAX技術(shù)。AJAX,指的是異步的Javascript和xml。它的基本原理就是頁(yè)面用Javascript發(fā)送一個(gè)異步的http請(qǐng)求到服務(wù)器,服務(wù)器返回?cái)?shù)據(jù)后,再用Javascript靜態(tài)的去更改頁(yè)面某個(gè)地方的值,而無(wú)需提交表單。2011-04-04
AJAX+Servlet實(shí)現(xiàn)的數(shù)據(jù)處理顯示功能示例
這篇文章主要介紹了AJAX+Servlet實(shí)現(xiàn)的數(shù)據(jù)處理顯示功能,結(jié)合實(shí)例形式分析了前臺(tái)ajax與后臺(tái)Servlet生成隨機(jī)數(shù)顯示的相關(guān)交互操作技巧,需要的朋友可以參考下2018-06-06
Ajax風(fēng)格的一款網(wǎng)頁(yè)Loading效果
本篇文章主要是對(duì)Ajax風(fēng)格的一款網(wǎng)頁(yè)Loading效果的實(shí)例代碼進(jìn)行了介紹,需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助2014-02-02
Ajax結(jié)合php實(shí)現(xiàn)二級(jí)聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了Ajax結(jié)合php實(shí)現(xiàn)二級(jí)聯(lián)動(dòng),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-08-08
比getjson好的底層函數(shù)是哪個(gè)有什么優(yōu)點(diǎn)
比getjson好的底層函數(shù)優(yōu)點(diǎn)在于如果網(wǎng)絡(luò)出問(wèn)題了,可以通過(guò)error方法來(lái)告訴用戶出錯(cuò),需要的朋友可以參考下2014-02-02
使用Ajax實(shí)時(shí)檢測(cè)"用戶名、郵箱等"是否已經(jīng)存在
這篇文章主要介紹了使用Ajax實(shí)時(shí)檢測(cè)"用戶名、郵箱等"是否已經(jīng)存在,需要的朋友可以參考下2015-01-01

