>  기사  >  웹 프론트엔드  >  ajax를 사용하여 링크 미리보기를 통해 링크 내용을 확인하세요.

ajax를 사용하여 링크 미리보기를 통해 링크 내용을 확인하세요.

亚连
亚连원래의
2018-05-25 15:47:181578검색

CSS를 사용하여 미리보기 팝업창 스타일을 설정하고, JavaScript를 사용하여 서버 요청 및 팝업창 표시가 필요한 친구들이 참고하면 됩니다.

먼저 구현 코드를 살펴보세요

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>
<p id="previewWin"> </p>
</body>
</html>

이 CSS는 창 re

#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;
}

의 미리보기 팝업 스타일을 설정합니다. 이 JavaScript는 서버를 요청하고 팝업 창을 표시합니다.

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&#39;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. 페이지의 모든 링크를 통해 각 링크에 onmouseover 이벤트

핸들러를 추가하세요. 이 이벤트 핸들러는 (아래에서 볼 수 있듯이) 대상 페이지를 읽고 (가능한) 방문자에게 미리보기를 표시합니다.

2.


var allLinks = document.getElementsByTagName("a");
for (var i=0; i< allLinks.length;i++) {
allLinks[i].onmouseover = getPreview;
}

getPreview()에서 먼저 읽고 싶은 파일을 찾아야 하며, 이를 위해서는 이벤트의 속성을 살펴봐야 합니다. 방문자가 사용하는 브라우저에 따라 URL은 evt.target 또는 window.event.srcElement에 저장됩니다. URL이 있으면 나중에 사용할 수 있도록 마우스의

x 및 y 위치를 얻을 수 있습니다.

3.

if (evt) {
var url = evt.target;
}
else {
evt = window.event;
var url = evt.srcElement;
}
xPos = parseInt(evt.clientX);
yPos = parseInt(evt.clientY);

미리보기를 보여주실 예정이라면 다시 숨겨주셔야겠죠? hidePreview()의 기능은 미리보기 창의 가시성을 숨김으로 재설정하는 것입니다.
4.
var prevWin = document.getElementById("previewWin");

if (xhr.readyState == 4) {

Ajax를 사용하여 파일을 읽은 후 이제 showContents() 함수를 입력합니다. 나중에 사용하기 위해 prevWin
에 PreviewWin 요소를 저장합니다. xhr.readyState가 4이면 미리보기를 표시할 차례입니다.

5.

function hidePreview() {
document.getElementById ("previewWin").style.visibility = "hidden";
}



모든 것이 정상이라면 xhr.status는 200이고 prevWin.innerHTML에 넣으려는 데이터는 이미 xhr.responseText에 저장되어 있습니다. 문제가 발생하면 prevWin.innerHTML에 오류 메시지를 넣으세요.
이후에는 현재 마우스 x 및 y 좌표인 미리보기 창을 표시할 위치를 찾아야 합니다. 이 창은 팝업 창이므로 호출을 트리거한 현재 마우스 위치의 약간 아래 오른쪽(아래로 2픽셀, 오른쪽으로 2픽셀)에 배치합니다.
마지막으로 prevWin을 표시로 설정하고 마우스가 미리보기 창을 떠날 때 prevWin이 숨겨져야 함을 JavaScript에 알립니다.

위 내용은 제가 여러분을 위해 정리한 내용입니다. 앞으로 여러분에게 도움이 되기를 바랍니다.

관련 기사:

SSH 온라인 몰은 ajax를 사용하여 사용자 이름 비동기 검증을 완료합니다.



Ajax 비동기 제출 데이터 반환 값 줄 래핑 문제 예시 분석

Ajax 요청에서 데이터 반환 순서 문제 분석



위 내용은 ajax를 사용하여 링크 미리보기를 통해 링크 내용을 확인하세요.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.