浏览器介绍
JavaScript 和 浏览器关系?
JavaScript 诞生就是为了能够让它在浏览器中运行!
BOM:浏览器对象模型
主流浏览器:
三方:
window (重要)
window 代表浏览器窗口
window.alert(1)
undefined
window.innerHeight
731
window.innerWidth
763
window.outerHeight
834
window.outerWidth
1536
扩充
1.window.innerWidth与window.innerHeight
window.innerWidth
与window.innerHeight
:获得的是可视区域的宽高,但是window.innerWidth
宽度包含了纵向滚动条的宽度,window.innerHeight
高度包含了横向滚动条的高度(IE8以及低版本浏览器不支持)。也就是:
window.innerWidth = width + padding + border + 纵向滚动条宽度
window.innerHeight = height + padding + border + 横向滚动条高度
2.window.outerWidth与window.outerHeight
window.outerWidth
与window.outerHeight
:获得的是加上工具条与滚动条窗口的宽度与高度。
window.outerWidth = width + padding + border + 纵向滚动条宽度
window.outerHeight = height + padding + border + 横向滚动条高度 + 工具条高度
Navigator
Navigator
:封装了浏览器的信息
navigator.appName
"Netscape"
navigator.appVersion
"5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
navigator.userAgent
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36"
navigator.platform
"Win32"
大多数时候,我们不会使用navigator
对象,因为会被人为修改!
不建议使用这些属性来判断和编写代码。
screen
代表屏幕尺寸:
screen.width
1536px
screen.height
864px
location (重要)
location 代表当前页面的URL信息
host: "www.baidu.com" //主机
href: "https://www.baidu.com/" //当前指向的位置
protocol: "https:" //协议
reload: ƒ reload() //刷新网页
location.assign('链接')//设置新的地址
document
document
:代表当前的页面,html DOM文档树
document.title
"百度一下,你就知道"
document.title='改一个title'
"改一个title"
获取具体的文档树节点,(就可以动态的增加节点或者删除节点)
<dl id="app">
<dt>Javadt>
<dd>javasedd>
<dd>javaeedd>
dl>
<script>
var dl = document.getElementById('app');
script>
获取cookie
document.cookie
""
我用的是谷歌浏览器,据我百度网上有些说:“在本地访问下,cookie在chrome上设置无效,需要在服务器环境下才可以操作cookie(如:http://localhost本地服务器)! 原因在于chrome不支持js在本地操作cookie。(点击打开)。下面这个是狂神视频里获取到的cookie:”
劫持cookie 原理
www.taobao.com
<script src = "aa.js"></script>
<!--恶意人员:获取你的cookie上传到他的服务器,甚至伪造cookie-->
所以不要轻易暴露自己的 cookie
,所以服务器端可以设置 cookie:httpOnly
,只要设置这个就安全了!
history (不建议使用)
history 代表浏览器的历史记录
history.back();//后退
history.forward(); // 前进
DOM
:文档对象模型,
核心
浏览器网页就是一个 DOM 树形结构!
要操作一个DOM节点,就必须要先获得这个DOM
获得DOM 节点
<div id="father">
<h1>一级标题</h1>
<p id="p1">p1</p>
<p class="p2">p2</p>
</div>
<script>
//对应CSS选择器
var h1 = document.getElementsByTagName('h1');
var p1 = document.getElementById('p1');
var p2 = document.getElementsByClassName('p2');
var father = document.getElementById('father');
var childrens = father.children[index];//获取父节点下的所有子节点
// father.firstChild
// father.lastChild
</script>
这是原生代码,之后尽量用的都是JQuery()
;
更新节点
<div id = "id1">
</div>
<script>
var id1 = document.getElementById('id1');
</script>
id1.innerText='123'
:修改文本的值id1.innerHTML='123'
:可以解析html文本标签操作 js
->id1.style.color = 'red';// 属性使用字符串
<-"red"
->id1.style.fontSize = '200px'// 驼峰命名
<-"200px"
->id1.style.padding='2em'
<-"2em"
删除节点
删除节点的步骤:先获取父节点,在通过父节点删除自己
<div id="father">
<h1>一级标题</h1>
<p id="p1">p1</p>
<p class="p2">p2</p>
</div>
<script>
var self = document.getElementById('p1');
var father = p1.parentElement;//获取父亲节点
father.removeChild(self)
//删除是一个动态过程
father.removeChild(father.childern[0])
father.removeChild(father.childern[1])//当删除第一个的时候节点会变化
father.removeChild(father.childern[2])
注意:删除多个节点的时候,children 是在时刻变化的,删除节点的时候一定要注意~
插入节点
我们获得了某个DOM节点,假设这个节点是空的,我们通过innerHTML 就可以增加一个元素了,但是这个DOM节点已经存在元素了,我们就不能这么干了!会产生覆盖
追加
<p id="js">javascript</p>
<div id="list">
<p id="se">javase</p>
<p id="ee">javaee</p>
<p id="me">javame</p>
</div>
<script>
var js = document.getElementById('js');
var list = document.getElementById('list');
list.appendChild(js);//追加到后面
</script>
创建一个新的标签,实现插入
<script>
var js = document.getElementById('js');//已经存在的节点
var list = document.getElementById('list');
//通过js 创建一个新的节点
var newp = document.createElement('p');
newp.id = 'newp';
newp.innerText = "Hello,javascript";
//创建一个标签节点
var myScript = document.createElement('script');
myScript.setAttribute('tyoe','text/javascritp');
//创建一个style标签
var myStyle = document.createElement('style');//创建了一个空style标签
myStyle.setAttribute('type','text/css');
myStyle.innerHTML = 'body{background-color:chartreuse;}';//设置标签的内容
document.getElementsByTagName('head')[0].appendChild(myStyle);
</script>
insertBefore
var ee = document.getElementById('ee');
var js = document.getElementById('js');
var list = document.getElementById('list');
// 要包含的节点.insertBefore(newNode,targetNode)
list.insertBefore(js,ee);
表单是什么 form DOM 树
text
radio
checkbox
hidden
password
<form action="post">
<p>
<span>用户名:span> <input type="text" id="username">
p>
<p>
<span>性别:span>
<input type="radio" name="sex" value="man" id="boy"> 男
<input type="radio" name="sex" value="women" id="girl">女
p>
form>
<script>
var input_text = document.getElementById('username');
var boy_radio = document.getElementById('boy');
var girl_radio = document.getElementById('girl');
//得到输入框的值
input_text.value;
//修改输入框的值
input_text.value = '654';
// 对于单选框,多选框等固定的值,boy_radio.value只能取到当前的值
girl_radio.checked;// 查看返回的结果,是否为true如果为true,则被选中!
girl_radio.checked = true;//赋值
script>
提交表单 md5 加密密码
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>
<script src="https://cdn.bootcss.com/blueimp-md5/2.10.0/js/md5.min.js">script>
head>
<body>
<form action="https://www.baidu.com/" method="post" onsubmit="return aaa()">
<p>
<span>用户名:span> <input type="text" id="username" name="username">
p>
<p>
<span>密码:span> <input type="password" id="input-password" >
p>
<input type="hidden" id="md5-password" name="password">
<button type="submit">提交button>
form>
<script>
function aaa() {
alert(1);
var name = document.getElementById('username');
var pwd = document.getElementById('input-password');
var md5pwd = document.getElementById('md5-password');
md5pwd.value=md5(pwd.value);
//可以校验判断表单内容,true就是提交,false就是阻止提交
return true;
}
script>
body>
html>
javascript
jQuery
库:里面存在大量的javascript函数
获取jQuery
(点击打开JQuery官网)
(点击打开JQuery中文文档)
公式:$(选择器).事件(事件函数)
编译过的用于上线产品,开发一般采用未编译的
使用:
可以直接找一些在线连接(直接百度搜:CDN jQuery)
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Titletitle>