当前位置: 首页 > article >正文

JavaScript学习笔记(7.0)

<!--
 * @Author: RealRoad1083425287@qq.com
 * @Date: 2023-03-13 14:50:18
 * @LastEditors: Mei
 * @LastEditTime: 2023-03-13 15:08:54
 * @FilePath: \vscode\鼠标跟随.html
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        #box{
            width: 200px;
            height: 50px;
            background: yellow;
            position: relative;
            margin: 100px;
        }
        #box p{
            width: 300px;
            height: 200px;
            background-color: red;
            position: absolute;
            left: 200px;
            top: 100;
            display: none;
            pointer-events: none;
            z-index: 100;
        }
        .test{
            width: 200px;
            height: 50px;
            background: yellow;
            position: relative;
            margin: 100px;
        }

    </style>
</head>
<body>
    <div id="box">
        touxiang
        <p>
            jieshao
        </p>
    </div>
    <div class="test">22222222222</div>
    <script>
        box.onmouseover=function(){
            // console.log(this.firstElementChild)
            this.firstElementChild.style.display="block"
        }
        box.onmouseout=function(){
            // console.log(this.firstElementChild)
            this.firstElementChild.style.display="none"
        }
        box.onmousemove=function(evt){
            // console.log(evt.offsetX,evt.offsetY)
            this.firstElementChild.style.left=evt.offsetX+"px"
            this.firstElementChild.style.top=evt.offsetY+"px"
        }
    </script>
</body>
</html>

鼠标跟随实例

鼠标拖拽实例

<!--
 * @Author: RealRoad1083425287@qq.com
 * @Date: 2023-03-13 15:11:26
 * @LastEditors: Mei
 * @LastEditTime: 2023-03-13 15:46:29
 * @FilePath: \vscode\鼠标拖拽.html
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        div{
            width: 200px;
            height: 100px;
            background: yellow;
            position: absolute;
            /* margin: 100px; */
        }
    </style>
</head>
<body>
    <div id="box">

    </div>

    <script>
        box.onmousedown=function(){
            console.log("down")
            document.onmousemove=function(evt){
            console.log("move")
            // x=evt.clientX
            x=evt.clientX-box.offsetWidth/2
            // y=evt.clientY
            y=evt.clientY-box.offsetHeight/2
            if (y<=0) y=0
            if(x<=0) x=0
            if (x>=document.documentElement.clientWidth-box.offsetWidth)
            x=document.documentElement.clientWidth-box.offsetWidth
            if(y>=document.documentElement.clientHeight-box.offsetHeight)
            y=document.documentElement.clientHeight-box.offsetHeight
            console.log(evt.clientX,evt.clientY)
            box.style.left=x+"px"
            box.style.top=y+"px"

            }
        }
        box.onmouseup=function(){
            console.log("up")
            document.onmousemove=null
        }
        

    </script>
</body>
</html>

 

 事件的传播

标准的dom事件流:

捕获:Windows=>document=>body=>outer=>

目标:inner

冒泡:outer=>body=>document=>window

默认情况下,只在冒泡触发

按照dom2事件绑定,并进行配置,才能看到捕获的回调函数被触发。

AJAX

(1)它能不刷新页面更新网页

(2)在加载页面后从服务器请求数据

(3)在页面加载后从服务器接收数据

(4)在后台向服务器发送数据

AJAX并不是编程语言。

AJAX是一种从网页王文web服务器的技术

AJAX代表异步JavaScript和XML

<!--
 * @Author: RealRoad1083425287@qq.com
 * @Date: 2023-03-13 16:31:04
 * @LastEditors: Mei
 * @LastEditTime: 2023-03-13 16:36:38
 * @FilePath: \vscode\Ajax.html
 * @Description: 
 * 
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved. 
-->
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="demo">
        <h2>让Ajax改变这段文字</h2>
        <button type="button" onclick="loadDoc()">更改文本</button>
    </div>

    <script>
        function loadDoc(){
            var xhttp=new XMLHttpRequest();
            xhttp.onreadystatechange=function(){
                if(this.readyState==4 && this.status==200){
                    document.getElementById("demo").innerHTML=this.responseText;
                }
            };
            xhttp.open("GET","ajax_info.txt",true);
            xhttp.send()
        }
    </script>
</body>
</html>

 

上述代码中点击button就从web服务器请求数据并显示它,这里读取的是Ajax_info.txt的文件内容。

AJAX(Asynchronous JavaScript And XML)

Ajax组合了浏览器内建的XMLHttpRequest对象(从web服务器请求数据)

JavaScript和HTML DOM(显示和使用数据)

Ajax是一个令人误导的名称。Ajax应用程序可能使用XML来传输数据,但数据作为存文本或JSON文本传输也同样常见。

Ajax允许通过与场景后面的web服务器交换数据来异步更新网页。这意味着可以更新网页的部分,而不需要重新加载整个页面。

 

1.网页中发生一个事件(页面加载、按钮点击)

2.由JavaScript创建XMLhttpRequest对象

3.XMLHttpRequest对象向web服务器发送请求

4.服务器处理该请求

5.服务器将响应发送回网页

6.由JavaScript读取响应

7.由JavaScript执行正确的动作(比如更新页面)

 Ajax的核心是XMLHttpRequest对象。

XMLHttpRequest对象用于同幕后服务器交换数据。这意味着可以更新网页的部分,而不需要重新加载整个页面。

创建XMLHttpRequest的语法:

var=new XMLHttpRequest();

老版本IE浏览器语法为:

var=new ActiveXObject("Microsoft.XMLHTTP");

跨域访问

出于安全原因,现代浏览器不允许跨域访问。

这意味着尝试加载的网页和XML文件都必须位于相同服务器上。

XMLHttpRequest对象方法

方法描述
new XMLHttpRequest()创建新的XMLHttpRequest对象
abort()取消当前请求
getAllResponseHeaders()返回头部信息
getResponseHeader()返回特定的头部信息
open(method,url,async,user,psw)

规定请求

method:请求类型GET或POST

URL:文件位置

async:TRUE(异步)或FALSE(同步)

user:可选的用户名称

psw:可选的密码

send()将请求发送到服务器,用于GET请求
send(string)将请求发送到服务器,用于POST请求
setRequestHeader()向要发送的报头添加标签/值对


http://www.kler.cn/a/1415.html

相关文章:

  • ubuntu20下编译linux1.0 (part1)
  • Jenkins-持续集成、交付、构建、部署、测试
  • Linux(上):基本知识篇
  • arcgisPro加载CGCS2000天地图后,如何转成米单位
  • Redis Java 集成到 Spring Boot
  • 5.1 数据库:INSERT 插入语句
  • 【Vue】Vue的安装
  • 【SCL】实现简单算法--冒泡排序
  • 前端面试题
  • 系统架构:经典三层架构
  • 【C++】命名空间
  • Word自动化办公 python-docx
  • 【数据结构】Java实现单链表
  • 【LeetCode每日一题】——165.比较版本号
  • Vector的扩容机制
  • idea中使用maven进行多模块打包部署时jar包中无依赖的问题(示例:jar包才5k,且无法正常启动)
  • 两年外包生涯,感觉自己废了一半....
  • 2.机器学习笔记第二周
  • 2023年江苏省职业院校技能大赛中职网络安全赛项试卷-学生组-任务书
  • openssh 9.0p1版本和openssl1.1.1o版本部署实操
  • 网络总结知识点(网络工程师必备)四
  • 多重背包的单调队列优化
  • 【大数据】Hive系列之- Hive-DML 数据操作
  • java项目发布到Linux
  • 考研数二第五讲 无穷小阶数问题的求解
  • 10.0自定义SystemUI下拉状态栏和通知栏视图(六)之监听系统通知