2019年底前的web前端面试题初级-web标准应付HR大多面试问题

2019年底前的web前端面试题初级-web标准应付HR大多面试问题_第1张图片

作者 | Jeskson
来源 | 达达前端小酒馆

问:你知道在css中,html的标签元素分多少中不同的类型吗?

答:大体可分三种:1,块状元素,2,内联元素,3,内联块状元素

块级元素:就是每个块级元素都是从新的一行开始的,并且后面的元素也是另起一行的。

元素的高度,宽度,行高,顶和底边距是可以设置的。

元素宽度在不设置的情况,它的本身父容器是100%。

~

行内元素:就是和其他的元素都在同一行上。

元素的高度,宽度,行高,顶部和底部边距不可以设置。

元素的宽度就是它包含的图片,文字的宽度,不可改变。


行内块状元素:就是和其他元素都在一行上。

元素的高度,宽度,行高顶部和底部边距都是可以设置的。


浏览器的默认值:

IE页边距默认:10px

FF页边距默认为:8px

清除页边距:

body{
 margin: 0;
 padding: 0;
}

段间距:

IE默认值为19px,FF默认值为1.12em

清除段间距:

p {
 margin-top: 0;
 margin-bottom: 0;
}

各大浏览器默认字体的大小为16px,等于medium。

列表样式,IE默认为40px(margin属性设置),FF默认为40px(padding属性设置)。

dl无缩进,元素dd默认缩进40px

清除列表样式:

ul,ol,dd {
 list-style-tyle: none;
 margin-left: 0;
 padding-left: 0;
}

元素居中,IE默认为text-align: center,FF默认为margin-left: auto; margin-right: auto;

超链接默认带有下划线,颜色蓝色,被访问过的链接为紫色。

清除链接样式:

a {
 text-decoration: none;
 color: #000;
}

鼠标样式:IE默认为 cursor: hand; FF默认为 cursor: pointer。

h5的优势:

解决跨浏览器,跨平台问题,增强了web的应用程序

h5新元素:

header 用于定义文档或是节的页眉

footer 用于定义文档或是节的页脚

article 用于定义文档内的文章

section 用于定义文档中的一个区域

aside 用于定义当前页面或是当前文章的内容几乎无关的附属信息

figure 用于定义一段独立的引用

figcaption 用于表示是与其相关联的引用的说明/标题

hgroup 用于对多个

~

元素进行组合

nav 用于定义页面上的导航链接部分

mark 用于定义高亮文本

time 用于显示被标注的内容是日期或是时间

meter用于表示一个已知最大值和最小值的计数器

progress 用于表示一个进度条

audio 定义音频

video 定义视频

注意:section元素强调分段或是分块,而article元素强调独立性。

hidden元素为true时显示,为false时隐藏。

display设置css时,hidden=‘true’相当于dispaly: none。

contentEditable 属性规定元素内容是否可编辑。

表单output

output元素用于表示计算或是用户操作的结果。

表单相关元素和属性:

output元素用来表示计算或是用户操作的结果。




 
 h5的output


 
 0  100 
50

input的type类型:

url
生成一个url输入框

tel
生成一个只能输入电话号码的文本框

search
生成一个专门用于输入搜索关键字的文本框

range
生成一个拖动条,通过拖动条

color
用来创建一个用户使用的颜色选择器

time
生成第一个时间选择器

datetime
生成一个UTC的日期时间选择器

datetime-local
生成一个本地化的日期时间选择器

date
显示一个日期输入区域,可同时使用日期选择器,结果值包括年,月,日,不包括时间

month
生成一个月份选择器

week
生成一个选择的几周的选择器

email
生成一个E-mail输入框

number
生成一个只能输入数字的输入框

input属性:

placeholder
简短的提示信息

autocomplete
快速输入,一般浏览器提供了自动补全的功能选择

autofocus
当浏览器打开这个页面时,这个表单控件会自动获取焦点

list
为文本框指定一个可用的选项列表,当用户在文本框中输入信息时,会根据输入的字符,自动显示下拉列表提示,供用户从中选择

pattern
用于验证表单输入的内容

novalidate
当提交表单的时候不会其进行验证

required
必需在提交之前填写的字段

spellcheck
拼写检查,为input,textarea等元素新增属性

formenctype
规定在发送到服务器之前应该如何对表单数据进行编码

formtarget
带有两个提交按钮的表单,会提交到不同的目标窗口

multiple
一次上传多个文件

maxlength
用于规定文本区域的最大字符数

wrap
是否包含换号符

css选择器:

兄弟选择器
属性选择器
伪类选择器
伪元素选择器

属性:
background-clip
设置背景覆盖范围

background-origin
设置背景覆盖的起点

background-size
设置背景的大小

text-overflow
设置当文本溢出元素框时处理方式,属性值,clip/ellipsis

word-wrap
规定单词换行方式,属性值,normal/break-word

word-break
规定自动换行的方式,属性值,normal/break-all/keep-all

transform 3D函数:

rotateX:表示元素沿着x轴旋转

rotateY:表示元素沿着y轴旋转

rotateZ:表示元素沿着z轴旋转

transform-style:
用来设置嵌套的子元素在3D空间中显示效果。它可以设置两个属性值。

css3的过渡属性

过渡的属性:
transition-delay:设置过渡的延迟时间,transtion-duration:设置过渡的过渡时间,transition-timing-function:设置过渡的时间曲线,transition-property:设置哪条css使用过渡,transition:一条声明设置所有过渡属性。

css3的动画属性:

animation属性,属性包括:
@keyframes:含义定义动画选择

animation-name:使用@keyframes定义的动画

animation-delay:设置动画的持续动画时间

animation-timing-function:设置动画的时间曲线

animation-iteration-count:设置动画播放次数

animation-direction:设置动画反向播放

animation-play-state:设置动画播放状态

transiton:一条声明设置所有动画属性

css3的新增单位:

px,em,rem,vh,vw,%

px为绝对单位,页面按精确像素展示
em为相对单位,基准点为父节点字体的大小,em会根据父级元素的大小而变化,但是如果嵌套了多个元素,要去计算,很容易出错,就有了rem。

rem为相对单位,相对根节点html的字体大小来计算。

%百分比,相对长度单位,相对于父元素的百分比值。

vm,vh,vmin,vmax主要用于页面视口大小布局

vw:viewpoint width视窗宽度,lvm等于视窗宽度1%

vh:viewpoint height视窗高度,lvh等于视窗高度的1%

vmin:vw和vh中较小的那个。

vmax:vw和vh中较大的那个。

弹性盒子模型:

Box-model定义了一个元素的盒子模型

Flexbox

box-lines:
设置或检索弹性盒子模型对象的子元素是否可以换行显示

box-direction
设置或检索弹性盒子模型对象的子元素的排列顺序是否反转

box-ordinal-group
设置或检索弹性盒子模型对象的子元素的显示顺序

JavaScript语言:

1995年,网景Netscape公司发明了LiveScript,后改名JavaScript

1997.06为ECMAScript1.0版
1998.06为ECMAScript2.0版
1999.12为ECMAScript3.0版
2007.10为ECMAScript4.0版
2009.12为ECMAScript5.0版

2015.06 ECMAScrip6版,ES6

JavaScript特点:

JavaScript代码可在内部,外部,和行内

alert('da'); // 系统弹窗
console.log(); // 输出在控制台
document.write(); // 打印在页面
document.getElementById().innerHTML = "da";
document.getElemnetById("box").style.color = "red";

关键字

break,else,new,var,case,
finally,return,void,catch,for,
switch,while,continue,function,this,with,
default,if,throw,delete,in,
try,do,instanceof,typeof

定义变量:(临时存储的容器)

变量,临时存储信息的容器,可以复用

var name;
name = 'da';
alert(name);

声明变量并同时赋值:

var a = 2;
console.log(a) // 2

var name = 'da';
var name = 'dada';
console.log(name); // da

变量名对大小写敏感

命名规范:使用下划线连接关键字,使用下划线开头,使用$符号开头,用小写字母,驼峰命名法,布尔值使用is开头。

数据类型:

字符串string
数字number
布尔值boolean
未定义undefined

undefined有两种:

真没有定义为undefined
定义了,但是没有赋值为undefined

注意:变量必须要有个明确的数据类型,否则是不规范的写法,值为undefined,变量的类型是可以变的。

var a='da';
alert(typeof a); // string
a = 1;
alert(typeof a); // number

对象object

Object是所有js对象的超类,基类,js中的所有对象都是继承自object对象的。

array数组对象
定义数组的属性和方法

Number数字对象

boolean布尔对象
Error错误对象
处理程序的错误

function函数对象
定义函数的属性和方法

Math数学对象,Date日期对象,RegExp对象正则表达式对象,String字符串对象,定义字符串属性和方法。

空null
null表示一个空对象,什么都没有,表示无值
通常用作一个空引用,或一个空对象,就像一个占位符

运算:算术运算符

强制转换:

字符串转数字:

parseInt()
parseFloat()
isNaN()

// 定义函数
function 函数名() {
 // 方法体-函数体
}
// 点击事件
onclick = "函数名()"

parseInt("123") -> 123 // 取整数
parseFloat("2.3") ->保留小数 2.3
isNaN用于判断是不是非数字,非数字返回true

数字转字符串toString()
赋值运算,关系运算,逻辑运算

表达式为包含赋运算的语句,单独的元素就不叫表达式

问:“=”,“==”,“===”有什么区别?

=是赋值符号,是对变量所代表的内存的写的操作
==忽略数据类型的判断,是否相等
=== 数值和数据类型都要相等才判断是相等

三元运算:

三元运算符:(比较表达式)?结果1:结果2

隐式转换

console.log(2+3+"hello"); // 5hello
console.log("hello"+3+5); // hello35

程序运行的三大结构:顺序结构,选择结构,循环结构

顺序结构,代码逐行执行,自上而下

选择结构,通常是和关系比较一起用

单分支选择,if语句

双分支选择:if-else语句

多分支语句:if-else if-else语句

布尔值为false

false情况:

0,undefined,null,-0,NaN,""空字符串,false

switch使用情况,在匹配某个值相对不相等,而不是匹配某个范围的情况下。

while循环可以帮助我们重复去做一些事情,不知道具体执行的次数,使用最合适。

while(条件表达式){
 // 要重复执行的代码段-循环体
}

do-while

do-while是先执行循环体,再检测循环条件,do-while能保证循环体至少执行一次。

for循环过程

for(循环变量初始化;循环条件判断;循环变量的修改){
 循环体
}

循环变量初始化,循环条件判定,执行循环体,循环变量递增或是递减。

break和continue

break退出循环
continue跳转本次循环,继续下一次循环

数组:
array数组对象用于在单个的变量中存储多个值

数组,一次性申请一批存储空间,引用类型
数组声明方式,可存放任意数据类型,并通过索引来访问每个元素

var arr = new Array();
var arr = [];

数组方法:

indexOf()来搜索一个指定的元素的位置,没有找到返回-1

concat()方法把当前的数组和另一个数组连接起来,返回一个新的数组

push()向数组的末尾添加若干元素,pop()把数组的最后一个元素删除掉

unshift()向数组前添加若干元素

shift()则把数组的第一个元素删除掉

slice()截取数组的部分元素,然后返回一个新的数组

sort()可以对当前数组排序

reverse()把整个数组的元素给掉个个,反转

join()方法把数组的每个元素用指定的字符串连接起来,返回新的字符串

splice()方法是修改数组的方法,可以从指定的索引开始删除若干元素,然后从位置添加,几个元素,可以只删除,不添加。

字符串方法:

slice(),slice(start,[,end]),start开始索引end结束索引

substr(),substr(start[,length]),start开始,取length个字符

split(),split([separator[,limit]]),按条件分割字符串,返回数组

indexOf()在父串中首次出现的位置,从0开始,没有返回-1

lastIndexOf()倒序查找

charAt(index)
指定索引的字符

toLowerCase()
转小写

toUpperCase()
转大写

正则表达式:

RegExp是一个对象,可以通过new运算符声明一个正则表达式

var da = new RegExp("a","i");

var da = /abc/g; // 全文匹配abc

元字符:

a-z 英文小写字母
A-Z 英文大写字母
0-9 数字

\r\n\t 非打印字符
\d 数字,相当于0-9

\D \d取反
\w 字母 数字 下划线
\W \w取反
\s 空白字符
\S 非空字符
{n} 匹配n次
{n,}匹配至少n词
{n,m} 至少n次,最多m次

  • 匹配0个或多个,{0,}
  • 匹配1个或多个,{1,}
    ? 匹配0个或1个,相当于{0,1}
    ^ 匹配正则开头,放在[^],内容取反
    $ 匹配正则结尾
    | 匹配 | 两侧任选其一
    () 分组,子存储

模式修饰符

i 忽略大小写
g 全文查找
m 多行查找

var da = /abc/ig; // 全局

test方法

检索字符串中指定的值。返回true或是false。

exec方法:

用于检索字符串中的正则表达式的匹配,返回一个数组,其中存放匹配的结果。未找到匹配,返回值未Null。

支持正则得String方法

search()
第一个与正则相匹配得字符串的索引

match()
找到一个或多个正则表达式的匹配,没有找到返回Null,否则返回一个数组

replace()
替换与正则表达式匹配的字符串

split()
把字符串分割为字符串数组

对象:

定义对象,对象的数据访问

JSON是一种轻量级的数据交换格式,它是基于js对象的格式,以key:value的格式进行存储数据,独立于编程语言的文本格式来存储和表示数据。

Math方法

abs()绝对值

random()随机数

round()四舍五入

floor()向下取整

ceil()向上取整

max(x,y)x和y中的最大值

min(x,y)x和y中的最小值

cos(x)
sin(x)
sqrt(x)平方根
pow(2,4)次方

Date方法:

getFullYear()
返回年

getMouth()
返回月

getDate()
getDay()返回星期
getHours(0返回小时
getMinutes()返回分钟

getSeconds()返回秒
getTime() 返回毫秒数

setFullYear(0
setMouth(0
setDate()
setHours()
setMinutes()
setSeconds()
setTime()

function Dyear(year) {
 if(year%4==0&&year%100!=0||year%400==0){
  return true;
 }
}

面向对象

JavaScript是基于对象编程的,面向对象是一种编程思想

类是将事物进行分类,类是一个抽象的概念,对象是具体的事物,类是对象的抽象,对象是类的具体实例,类 不占用内存,对象占用内存空间。

var obj = new Object();

for in 循环 多用于遍历json

var obj = {
 name: 'dada',
 age: 1,
}
for(var key in obj) {
 console.log(key,obj,key)
}

检测对象有没有某个属性:

if("name" in obj)
if(obj.name === undefined)

定义对象:

字面量的创建:

var da = {
 name: 'da',
}

工厂模式:

工厂模式

// 批量创建对象
function Da(n, c) {
 return {
 name: n,
 age:c,
 say: function() {
  alert('da');
 }
}

生成实例对象:

var da1 = Da('dada',2);

构造函数:

JavaScript提供了一个构造函数Constructor模式。

构造函数,就是一个普通的函数,但是内部使用了this变量。

对构造函数使用new,就能生成实例,并且this变量会绑定到实例对象上。

构造函数首字母要大写

构造函数中的this,指向的实例化的对象

function Da(n,a) {
 this.name = name;
 this.age = age;
}

生成实例对象,会自动含有一个constructor属性,指向它们的构造函数。

instanceof元素符,验证原型对象与实例对象之间的关系。

instanceof不认为原始类型值的变量是对象。

原型和原型链

构造函数都有一个prototype属性,指向另一个对象。这个对象的所有属性和方法,都会被构造函数的实例继承。

Da.protoType.say = function() {
 alert('da');
}
da1.say();
da2.say();

所有的函数都是Function的实例,构造函数上都有一个prototype,而prototype是一个对象,这个对象上有一个constructor属性,这个属性指向的实例的对象?该属性指向的就是构造函数。

实例对象上有一个__proto__属性,该属性指向原型对象,该属性不是标准的属性。

单例模式

var Singleton = {
 attribute: true,
 method: function() {},
 method1: function() {}
};

把代码封装起来,暴露一个入口,从而避免变量的污染。

工厂模式:提供创建对象的接口

场景:
对象的构造复杂,需要依赖具体的环境创建不同的实例,处理大量具有相同属性的小对象。

单例模式

var single = (function() {
 var unique;
 function getInstance() {
  if(unique === undefined) {
   unique = new Construct();
  }
  return unique;
 }
 fucntion Construct() {
 }
 return {
  getInstance: getInstance
 }
})();

局部变量和全局变量

函数体内的变量,局部变量,仅仅在函数体内使用

函数体外的变量,全局变量,对全局可见

匿名函数,就是没有名字的函数,可以看成一种数据,将它赋值给一个变量:

// 函数变量
var da = function() {
}

(function() {
})()

闭包

闭包有权访问另外一个函数作用域中的变量的函数。

在一个函数内部创建另外一个函数,并把这个函数return。

用函数为元素绑定事件,当事件发生时,可以操作该函数中的变量。

第一种:

function da() {
 var a = 1;
 return function() {
  a++;
  console.log(a);
 };
};

var b = da();
b();

第二种:

function da() {
 var name = 'da';
 document.getElementById("box").onclick=function() {
  alert(name);
 }
};

da();// 函数内部绑定一个事件

第三种:

function da (num, fn) {
 if(num>21){
  return fn && fn(num);
 };
};

var a = da(32,function(n) {
 return n+1;
});

console.log(a);

BOM就是浏览器的对象模型

confirm()
带有确认,取消,按钮的提示框

prompt()
带有可输入内容的文本域的提示框

setInterval() 间隔定时器
clearInterval()
clearTimeout()

requestAnimationFrame

window.history.go(1)前进
window.history.go(-1)后退

window.history.forward()
window.history.back()

location定位:

window.location.href = ''
window.location.reload()
页面重载
screen

window.screen.width
返回当前屏幕的宽度
window.screen.height
返回当前屏幕的高度

document代表所有html的元素

DOM是文档对象模型

getElementById(id)->id对象

getElementByTagName(tag)->标签数组

getElementByName(name)->name数组

getElementByIdClassName(class)->class

操作dom间的关系:

createElement(tag)
创建元素

removeChild(对象)
删除元素

appendChild(对象)
插入元素

replaceChild(替换对象,被替换对象)
替换元素

insertBefore(对象,目标对象)
前部插入

节点属性,每一个元素,都可以看作是树的一个分支节点,DOM结构就像树一样,从文档根document,逐步分支展开

cloneNode克隆节点。节点类型,

12种节点类型:

Element元素
Attr属性
Text元素的文本内容
Comment注解
Document整个文档
DOCTYPE文档类型声明

节点属性:
setAttribute("属性名",属性值)
设置属性

getAttribute(属性名)
获取属性

removeAttribute(属性名)删除属性

hasAttributes(属性名)
判断属性是否存在

attribute与property

attribute是每个dom元素上的属性节点

property
js以对象的方式定义的属性

事件:

addEventListener()
增加事件监听

removeEventListener()
删除事件监听

onload加载

onunload用户退出页面

onscroll
滚动事件

onresize窗口或框架被调整尺寸

onscroll
滚动条事件

onclick鼠标点击

ondbclick鼠标双击

onmousedown鼠标按键按下

onmouseup
鼠标按键被松开

onmouseout鼠标被移到某元素之上

onmouseover
鼠标被移到某元素之上

onmouseleave鼠标离开某元素

onmousemove鼠标移动

oncontextmenu右键菜单

input事件

onblur元素失去焦点
onfocus元素获得焦点
onchange内容发生改变

onkeydown按键按下
onkeypress按键按下并释放
onkeyup按键释放

form事件
onreset表单重置
onsubmit表单提交

事件对象Event

onDa.onclick = function(ev){
 // ev:事件对象
}

事件流

阻止默认行为:
event.preventDefault()

事件流:捕获-》事件目标-》冒泡

事件捕获
事件目标
事件冒泡
阻止事件冒泡

ev.target
ev.target.nodeName
ev.target.tagName

事件委派

将事件绑定在父级上,利用事件冒泡原理,通过判断事件的“目标元素”来触发父级上绑定的事件。

obj.addEventListener(事件,回调函数,冒泡/捕获)

btn.addEventListener("click",function(ev){
 // ev事件对象
 alert(123);
},false)
// 冒泡阶段

jquery是一个JavaScript的库。它是通过封装原生的JavaScript函数得到一整套定义好的方法。

jQuery选择器:

基本选择器:id选择器,class选择器,标记选择器,*选择器

属性选择器。

层级选择器:

匹配所有后代元素

匹配直接子元素

匹配所有在该元素后的next元素
匹配该元素的所有同辈元素

位置选择器:

:first匹配第一个元素

:last获取最后一个元素

:not去除所有与给定选择器匹配的元素

:even匹配所有索引值为偶数的元素

:odd 匹配所有索引值为奇数的元素

:eq匹配一个给定索引值的元素

:gt匹配所有大于给定索引值的元素

:lt匹配所有小于给定索引值的元素

后代选择器,子代选择器,选择器对象,

子元素:

:first-child
匹配第一个子元素

:last-child
匹配最后一个子元素

:first-of-type
选择所有相同的元素名称的第一个兄弟元素

:first-of-type
选择所有相同的元素名称的最后一个兄弟元素

:nth-child
匹配其父元素下的第N个子或奇偶元素

表单对象属性

:enabled匹配所有可用元素

:disabled匹配所有禁用元素

:checked匹配所有选中的被选中元素

:selected匹配所有选中的option元素

DOM操作:

clone()
克隆匹配的DOM元素并且选中这些克隆的副本

empty()
删除匹配的元素集合中所有的子节点

remove()
从Dom中删除所有匹配的元素

repalceWith()
将所有匹配的元素替换成指定的元素

repalceAll()
将匹配的元素替换掉所有selector匹配到的元素

append()
将每个匹配的元素内部追加内容

appendTo()
将所有匹配的元素追加到另一个指定的元素集合中

prepend()
将每个匹配的元素内部前置内容

prependTo()
把所有匹配的元素前置到指定的元素集合中

after()
在每个匹配的元素之后插入内容

before()
在每个匹配的元素之前插入内容

insertAfter()
将所有匹配的元素插入到指定的元素后

insertBefore()
将所有匹配的元素插入到指定的元素前

eq()获取第N个元素

hasClass()检查当前的元素是否含有某个特定的类

filter()筛选出与指定的表达式匹配的元素

页面载入


$(document).ready(function() {
})

$(function() {
})

$("#box").on("click",function(){
})

$("#box").off("click,mousemove");

keydown(),keyup(),keypress()
submit(),change(),scroll(),resize()

标签样式

$(选择器).css(样式属性名,[,值])

$(选择器).addClass(类别名)

$(选择器).removeClass(类别名)

$(选择器).toggleClass(类别名)

show(),hide()
slideDown(),slideUp()
slideToggle()
fadeIn(),fadeOut(),fadeTo(),fadeToggle()

Ajax,jquery底层ajax实现。

HTTP通讯协议,ajax等于异步javascript和xml

ajax工作原理,用户登录,调用ajax帮定的那个的事件处理函数,发送请求,检查用户名,部分数据传入到事件处理函数,更新到浏览器。

ajax中的XMLHttpRequest对象,发送异步请求,接收响应,执行回调。

xhr = new XMLHttpRequest();

xhr.open("post", "test.php");

xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");

xhr.send("name=da&age=10");

xhr.onreadystatechange=function() {
 if(xhr.status==200&&xhr.readyState==4){
  var result = xhr.responseText;
 }
}

xml和html的区别:

xml是区分大小写,所有标记必须成对出现

html时不区分大小写的,不是所有的 标签都是成对的
jquery

load()从服务器加载数据,返回数据

$(selector).load(url, data, callback);

$.get(url,data,callback,dataType);

$.post(url,data,callback,dataType);

跨域问题,同源策略,同源是协议,域名,端口相同,理解为一个服务器。同源策略是从一个源加载的文档或脚本去另一个源进行资源交互。

浏览器同源政策及其规避方法(阮一峰)

http://www.ruanyifeng.com/blog/2016/04/same-origin-policy.html
JSONP方式解决跨域问题

2019年底前的web前端面试题初级-web标准应付HR大多面试问题_第2张图片


function addScriptTag(src) {
  var script = document.createElement('script');
  script.setAttribute("type","text/javascript");
  script.src = src;
  document.body.appendChild(script);
}

window.onload = function () {
  addScriptTag('http://example.com/ip?callback=foo');
}

function foo(data) {
  console.log('response data: ' + JSON.stringify(data));
};  

服务端对应的接口在返回参数外面添加函数包裹层

foo({
  "test": "testData"
});   

基于JSONP的实现原理

只能是“GET”请求,不能进行较为复杂的POST和其它请求

2019年底前的web前端面试题初级-web标准应付HR大多面试问题_第3张图片

代理、JSONP、XHR2(XMLHttpRequest Level 2)

XMLHttpRequest Level 2

header('Access-Control-Allow-Origin:*'); //*代表可访问的地址,可以设置指定域名 
header('Access-Control-Allow-Methods:POST,GET'); 

XHR2最简单
只支持HTML5

JSONP相对简单
只支持GET方式调用

代理实现最麻烦
使用最广泛,任何支持AJAX的浏览器都可以使用这种方式

❤️ 不要忘记留下你学习的脚印 [点赞 收藏 评论]

作者Info:

【作者】:Jeskson

【原创公众号】:达达前端小酒馆。

【转载说明】:转载请说明出处,谢谢合作!~

关于目前文章内容即涉及前端,PHP知识点,如果有兴趣即可关注,很荣幸,能被您发现,真是慧眼识英!也感谢您的关注,在未来的日子里,希望能够一直默默的支持我,我也会努力写出更多优秀的作品。我们一起成长,从零基础学编程,将 Web前端领域、数据结构与算法、网络原理等通俗易懂的呈现给小伙伴。分享 Web 前端相关的技术文章、工具资源、精选课程、热点资讯。


若本号内容有做得不到位的地方(比如:涉及版权或其他问题),请及时联系我们进行整改即可,会在第一时间进行处理。


请点赞!因为你们的赞同/鼓励是我写作的最大动力!

欢迎关注达达的CSDN!

这是一个有质量,有态度的博客

2019年底前的web前端面试题初级-web标准应付HR大多面试问题_第4张图片

你可能感兴趣的:(2019年底前的web前端面试题初级-web标准应付HR大多面试问题)