博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
前端面试题
阅读量:5102 次
发布时间:2019-06-13

本文共 5635 字,大约阅读时间需要 18 分钟。

什么是跨域?怎么解决跨域问题?

什么是跨域?

跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器施加的安全限制。

浏览器执行javascript脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。

解决办法:

1、JSONP:

使用方式就不赘述了,但是要注意JSONP只支持GET请求,不支持POST请求。

2、代理:

例如www.123.com/index.html需要调用www.456.com/server.php,可以写一个接口www.123.com/server.php,由这个接口在后端去调用www.456.com/server.php并拿到返回值,然后再返回给index.html,这就是一个代理的模式。相当于绕过了浏览器端,自然就不存在跨域问题。

3、PHP端修改header(XHR2方式)

在php接口脚本中加入以下两句即可:

header('Access-Control-Allow-Origin:*');//允许所有来源访问

header('Access-Control-Allow-Method:POST,GET');//允许访问的方式

请说出三种减少页面加载时间的方法

1.尽量减少页面中重复的HTTP请求数量

2.服务器开启gzip压缩

3. css样式的定义放置在文件头部

4. Javascript脚本放在文件末尾

5.压缩合并Javascript、CSS代码

6.使用多域名负载网页内的多个文件、图片

js操作字符串常用的方法

JS操作String对象的方法

charAt(index):返回指定索引处的字符串

charCodeAt(index):返回指定索引处的字符的Unicode的值
concat(str1,str2,...):连接多个字符串,返回连接后的字符串的副本
fromCharCode():将Unicode值转换成实际的字符串
indexOf(str):返回str在父串中第一次出现的位置,若没有则返回-1
lastIndexOf(str):返回str在父串中最后一次出现的位置,若没有则返回-1
match(regex):搜索字符串,并返回正则表达式的所有匹配
replace(str1,str2):str1也可以为正则表达式,用str2替换str1
search(regex):基于正则表达式搜索字符串,并返回第一个匹配的位置
slice(start,end):返回字符索引在start和end(不含)之间的子串
split(sep,limit):将字符串分割为字符数组,limit为从头开始执行分割的最大数量
substr(start,length):从字符索引start的位置开始,返回长度为length的子串
substring(from,to):返回字符索引在from和to(不含)之间的子串
toLowerCase():将字符串转换为小写
toUpperCase():将字符串转换为大写
valueOf():返回原始字符串值

Json对象与Json字符串互转

1>jQuery插件支持的转换方式: 

$.parseJSON( jsonstr ); // //jQuery.parseJSON(jso(jsonstr),可以将json字符串转换成json对象 

2>浏览器支持的转换方式(Firefox,chrome,opera,safari,ie9,ie8)等浏览器:
JSON.parse(jso(jsonstr); //可以将json字符串转换成json对象 
象 
JSON.stringify(jso(jsonobj); //可以将json对象转换成json对符串 
注:ie8(兼容模式),ie7和ie6没有JSON对象,推荐采用JSON官方的方式,引入,引入json.js。 

3>Javascript支持的转换方式: 

eval('(' + jsonstr + ')'); //可以将json字符串转换成json对象,注意需要在json字符外包裹一对小括号 
注:ie8(兼容模式),ie7和ie6也可以使用eval()将字符串转为JSON对象,但不推荐这些方式,这种方式不安全eval会执行json串中的表达式。 

4>JSON官方的转换方式: 

http://www.json.org/提供了/提供了一个了一个json.js,这样i,这样ie8(兼容模式),ie7和ie6就可以支持JSON对象以及其stringify()和parse()方法; 
可以在可以在https://github.com/douglascrockford/JSON-js上获取到上获取到这个js,一般现在用现在用json2.js。 

jQuery 元素选择器

jQuery 使用 CSS 选择器来选取 HTML 元素。

$("p") 选取 <p> 元素。
$("$("p.intro")ro") 选取所有 class="intro" 的 <p> 元素。
$("p#demo") 选取所有 id="demo" 的 <p> 元素。
jQuery 属性选择器
jQuery 使用 XPath 表达式来选择带有给定属性的元素。
$("[href]") 选取所有带有 href 属性的元素。
$("[href='#']") 选取所有带有 href 值等于 "#" 的元素。
$("[href!='#']") 选取所有带有 href 值不等于 "#" 的元素。
$("[href$='.jpg']") 选取所有 href 值以 ".jpg" 结尾的元素。
jQuery CSS 选择器
jQuery CSS 选择器可用于改变 HTML 元素的 CSS 属性。
$("p").css("background-color","red");

$(this) 当前 HTML 元素

$("p") 所有 <p> 元素
$("$("p.intro")ro") 所有 class="intro" 的 <p> 元素
$(".intro") 所有 class="intro" 的元素
$("#intro") id="intro" 的元素
$("ul li:first") 每个 <ul> 的第一个 <li> 元素
$("[href$='.jpg']") 所有带有以 ".jpg" 结尾的属性值的 href 属性
$("div#intro .head") id="intro" 的 <div> 元素中的所有 class="head" 的元素

打印三角形

document.writeln("打印三角形</br>"); for(var i=0;i<5;i++){ for(var j=5;j>i;j--){ document.writeln("&nbsp"); } for(var k=0;k<2*i+1;k++){ document.writeln("*"); } document.writeln("</br>") } 

清除浮动的方式及优缺点

1)以前清除浮动的时候总是在想要清除浮动的元素后面加:

  优点:通俗易懂,容易掌握

  点:可以想象通过此方法,会添加多少无意义的空标签,有违结构与表现的分离,在后期维护中将是噩梦,这是坚决不能忍受的,所以你看了这篇文章之后还是建议不要用了吧。

2)使用 br标签和其自身的 html属性

  这个方法有些小众,br 有 clear=“all | left | right | none” 属性   

2)使用 br标签和其自身的 html属性

.main{float:left;}
.side{float:right;}

  优点:比空标签方式语义稍强,代码量较少

  缺点:同样有违结构与表现的分离,不推荐使用

 

  3)父元素设置 overflow:hidden

  通过设置父元素overflow值设置为hidden;在IE6中还需要触发 hasLayout ,例如 zoom:1;

3)父元素设置 overflow

.main{float:left;}
.side{float:right;}

  优点:不存在结构和语义化问题,代码量极少

  缺点:内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素;04年POPO就发现,这是我作为一个多标签浏览控所不能接受的。所以还是不要使用了

 

  4)父元素设置 overflow:auto 属性

  同样IE6需要触发hasLayout,演示和3差不多

  优点:不存在结构和语义化问题,代码量极少
  缺点:多个嵌套后,firefox某些情况会造成内容全选;IE中 mouseover 造成宽度改变时会出现最外层模块有滚动条等,firefox早期版本会无故产生focus等, 请看 嗷嗷的  ,不要使用

 

  5)父元素也设置浮动

  优点:不存在结构和语义化问题,代码量极少

  缺点:使得与父元素相邻的元素的布局会受到影响,不可能一直浮动到body,不推荐使用

 

  6)父元素设置display:table

  优点:结构语义化完全正确,代码量极少

  缺点:盒模型属性已经改变,由此造成的一系列问题,得不偿失,不推荐使用

 

  7)使用:after 伪元素

  需要注意的是 :after是伪元素(),不是伪类(某些CSS手册里面称之为“伪对象”),很多清除浮动大全之类的文章都称之为伪类,不过csser要严谨一点,这是一种态度。

  由于IE6-7不支持:after,使用 zoom:1触发 hasLayout。

  下面是用after伪类实现,兼容多种浏览器:

.clearfix:after {            content: "";            display: block;            height: 0;            clear: both;            visibility: hidden;        }        /* 为兼容IE6,IE7,因为ie6,ie7不能用after伪类 */        .clearfix{                        zoom:1;        }

  优点:结构和语义化完全正确,代码量居中

  缺点:复用方式不当会造成代码量增加  

 

 一般情况下,如果父层内部有浮动(float)可能导致父层的高度为0,加上clearfix后就行了。

HTML:      
left
right
          CSS: .clearfix { zoom: 1 } .clearfix:after { content: ""; display: block; height: 0; clear: both; visibility: hidden; } .parent { background-color: red; width: 120px; } .left { float: left; background-color: pink; height: 60px; } .right { float: right; background-color: #abcdef; }

css三角形运用

<style>

.colored-border-empty-retangle {
margin: 50px auto;
width: 0;
height: 0;
border-top: 40px solid pink;
border-right: 40px solid green;
border-bottom: 40px solid red;
border-left: 40px solid blue;
}
</style>
<div class="colored-border-empty-retangle"></div>

推荐链接: https://www.cnblogs.com/keepfool/p/5616326.html

 

 

 

转载于:https://www.cnblogs.com/gaoxiaohe555/p/9773868.html

你可能感兴趣的文章
Idea 设置根目录
查看>>
深度优先搜索算法
查看>>
写第一个驱动之前
查看>>
hysbz 2243 染色(树链剖分)
查看>>
JavaScript提高:006:ASP.NET使用easyUI TABS标签updatepanel
查看>>
Clojure实现的简单短网址服务(Compojure、Ring、Korma库演示样例)
查看>>
FindWindowEx使用方法
查看>>
Touch panel DTS 分析(MSM8994平台,Atmel 芯片)
查看>>
Ubuntu下deb包的安装方法
查看>>
很具体GC学习笔记
查看>>
支持向量机随笔
查看>>
List删除行问题
查看>>
Linux 基础知识
查看>>
开辟新空间输入成绩
查看>>
Android屏幕适配
查看>>
c#使用XSLT将xml文档转换为html文档
查看>>
管道符、重定向、环境变量
查看>>
python日期,时间函数
查看>>
Timus 1146. Maximum Sum
查看>>
shell脚本学习总结02--数组
查看>>