python2.0_s12_day13_javascript&Dom&jQuery
今天主要内容:
JavaScript
Dom
jQuery http://www.cnblogs.com/wupeiqi/articles/5369773.html 今天主要内容大致了解:
javascript
1.首先要知道 JavaScript 和 Java 没有半毛钱关系.
2.JavaScript 和python语言 一样 它也是一门语言.对于python语言需要用python解释器解释.而javascript的解释器是浏览器.
3.javascript 能实现什么.javascript就是让我们的前端页面(html)动起来.怎样让它动?
假如现在有一个页面,页面上有一个标签,用浏览器展示出来,现在我们用javascript把它删掉或者在这个标签上下在加一个标签,是不是就动了!!那么是不是给我们的感觉就有一个动画的效果了.
对javascript 就是进行删除标签,修改标签,或者修改css的.
Dom
其实我们经常听到的前端所说的JS,其实就是指javascript+dom.
javascript实现了对html文件中的html标签或者css进行修改的,而dom就提供了查找指定标签或者css的方法.
我们既然说dom提供了查找 xxx的方法,那么我们可定会想到dom就是一个类,类实例化成为一个对象后就有相应的方法了.
对没错,dom其实就是一个类.在html中用docment代表dom实例化后的对象.除了提供一些查找的方法,还提供一些alert(),confirm(),consol.log()等等方法. jQuery
jQuery是什么?其实jQuery严格意义上来说它什么都不是,不算是一种具有独特功能的技术模块.
我们通过javascript+dom两个东西,我们就可以在页面上做任何操作了.但是对于复杂的操作的话.我们需要很多步骤调用很多方法,可能100行代码才能实现.
而jquery它帮你把所有的功能都封装到一个包里面了.我们只需要引用这个包,调用它的方法,复杂的逻辑,复杂的运算它帮我们做,我们只需要知道一个函数名.
对于你来说,使用它能让你少做很多步操作就能实现很复杂的功能.
jQuery的产生就是为了简化程序员代码量.它相当于封装了javascript和dom的类库.
你后就不用写javascript和dom了,直接使用jque 就可以完成非常复杂的操作了. 我们既然说jQuery封装了javascript和dom,并且以后前端也用jQuery就行了,不用写原生的javascript和dom了,那么为什么不跳过javascript和dom呢,直接学jQuery呢.
因为,他们是基础,不知道原理,你用jQuery会很不顺手的. 下面我们依次学习:
JavaScript
JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编辑相应代码之后,浏览器可以解释并做出相应的处理.
1. JavaScript代码存在形式
<!-- 方式一 -->
<script type="text/javascript" src="JS文件"></script>
<!-- 方式二 -->
<script type="text/javascript">
Js代码内容
</script>
2. JavaScript代码存在位置
HTML的head中
HTML的body代码块底部(推荐) 由于Html代码是从上到下执行,如果Head中的js代码耗时严重,就会导致用户长时间无法看到页面,如果放到body代码块底部,那么即使js代码耗时严重,也不会影响用户看到页面效果,只是js实现特效慢而已.
<!--下面这个js文件在远端服务器,假设远端服务器挂了,浏览器再解释这段代码的时候会一直找下去,从而导致页面一直是大白页,直至等待超时报错-->
<!--当代码放到底部时,即使js耗时严重,之前的html代码也都执行完了.-->
<!--引入js文件的方式-->
<script src="https://www.gstatic.com/og/_/js/k=og.og2.en_US.iF4jnkQuaf0.O/rt=j/t=zcms/m=def/exm=in,fot/d=1/ed=1/rs=AA2YrTv5-POC4Ks9GtGRdY2ywUWisqz7-Q"></script> <!--js代码块写到script标签中-->
<script>
alert('');
</script>
3. 变量
全局变量
局部变量
JavaScript中变量的声明是一个非常容易出错的点,局部变量必须一个var开头,如果未使用var,则默认声明的是全局变量.
var name = 'ted' #局部变量
age =
注: 注释// 或/* */ 4. 基本数据类型
数字(Number)
var page = ;
var age = Number();
var a1 = ,a2 =, a3 =;
parseInt("1.2"); #转换成数字类型
parseFloat("1.2"); # 转换成数字类型,只是在显示的时候带小数点 var age = '18.2'
console.log(parseInt(age),typeof parseInt(age) )
结果 18 "number"
var age2 = '193.3'
console.log(parseFloat(age2),typeof parseFloat(age2))
结果:193.3 "number" 注: JavaScript中是没有float浮点数的,数据类型都是number,只是在显示的时候不一样 字符串(String)
var name = 'ted';
var name = String('ted');
var age_str = String();
常用的方法:
obj.trim() #去除两边的空格
obj.charAt(index) #索引取值
obj.substring(start,end) #获取字符串的子序列,类似于切片,开始的位置,结束的位置. 顾头不顾尾
obj.indexOf(char) # 获取某一个字符的索引位置
obj.length # 显示字符串的长度
布尔(Boolean)
var status = true;
var status = false;
var status = Boolen(==)
数组(Array)
数组是我们以后写代码中最长用到的.数组就等价于python的列表.在python里面用list创建列表,而在js里list = Array
创建数组的两种方法
var names = ['alex', 'tony', 'eric']
var names = Array('alex', 'tony', 'eric') 常用方法:
添加
obj.push(ele) 追加
obj.unshift(ele) 最前插入
obj.splice(index,,'content') 指定索引插入,中间这个0一定要有
移除
obj.pop() 移除尾部,并获取
obj.shift() 移除头部,并获取
obj.splice(index,count) 数组指定位置后count个字符并获取,是几个字符,不是索引,
["xx", "oo", "oo", , , , "aa"]
li.splice('',) 这里的2是个数,前面的1是索引位置
["oo", "oo"]
li
["xx", , , , "aa"]
切片
obj.slice(start,end)
合并
newArray = obj1.concat(obj2)
翻转
obj.reverse() 字符串化
obj.join('_') 将数组里的元素,使用'_"进行连接
长度
obj.length 显示长度
字典
对于javascript内部是没有字典类型的他是通过一个类来实现的.这句话怎么理解呢,意思是,如果你执行了下面的语句,它其实生成了一个对象,这个对象内部其实就像字典.反应到代码就是如下:
var items = {'k1': 123, 'k2': 'tony'}
items
Object {k1: 123, k2: "tony"}
我们看到,输入items显示上面一个东西.
对于基本的数据类型,就这么多,以后的操作就是对这些数据类型进行操作.并且还有些用不到. 接下来补充一点,并且是以后用的最多的.
在 python中有json,是将对象序列化和反序列化的.在js中也有json
用法如下:
items #这是一个字典
Object {k1: , k2: "tony"}
s = JSON.stringify(items) # 序列化过程
"{"k1":123,"k2":"tony"}"
s # 查看序列化后的结果
"{"k1":123,"k2":"tony"}"
JSON.parse(s) # 反序列化过程
Object {k1: , k2: "tony"}
这个一定要会 undefined
undefined表示未定义值
var name;
null
null是一个特殊值
5、循环语句
var names = ["alex", "tony", "rain"]; // 数组:方式一
for(var i=;i<names.length;i++){
console.log(i);
console.log(names[i]);
} // 数组:方式二
for(var index in names){
console.log(index);
console.log(names[index]);
}
var names = {"name": "alex", "age": }; // 字典:方式一
for(var index in names){
console.log(index);
console.log(names[index]);
}
// while循环
while(条件){
// break;
// continue;
}
6. 条件语句
//if条件语句 if(条件){ }else if(条件){ }else{ }
var name = 'alex';
var age = ; // switch,case语句
switch(name){
case '':
age = ;
break;
case '':
age = ;
break;
default :
age = ;
}
7、异常处理
try{ }catch(e) { }finally{ }
8、函数
函数的声明
function func(arg){
return true;
}
匿名函数
var func = function(arg){
return "tony";
}
自执行函数
(function(arg){
console.log(arg);
})('')
9、面向对象
function Foo (name,age) {
this.Name = name;
this.Age = age;
this.Func = function(arg){
return this.Name + arg;
}
} var obj = new Foo('alex', );
var ret = obj.Func("sb");
console.log(ret);
Dom 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口。
它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式。
我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来。DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容。
注:一般说的JS让页面动起来泛指JavaScript和Dom
1、选择器
document.getElementById('id'); # 通过标签id获取 对象,这里获得的对象只有一个,因为在html中id是不允许重复的
document.getElementsByName('name'); # 通过name属性获取 指定的对象,这里获得的是列表,即使是只有一个也被放到列表里
document.getElementsByTagName('tagname'); # 通过标签的种类获取指定的对象,这里获得的是列表,即使是只有一个也被放到列表里
2、内容
innerText # 获取标签对象内的所有文本值(不包括标签)
var obj = document.getElementsByTagName('div') # obj获得的是列表,所以要取 []
HTML页面body部分有以下代码:
<div>
sbssbsbsbsbs
<h2 id="">index1</h2>
</div>
<h2>index2</h2>
<script type="text/javascript">
var aaa = ;
switch (aaa) {
case :
console.log('');
break;
case :
console.log('');
break;
default:
console.log('');
}
</script>
用谷歌浏览器打开上面这个网页,并且在console中输入以下内容:
var obj = document.getElementsByTagName('div')
obj[0].innerText
"sbssbsbsbsbs
index1
"
上面我们看到div标签中有字符串和一个h2标签,当使用 obj.innerText获取内容的时候,把div里的字符串和h2标签里的内容都获取到了,但是却没有获取到h2标签(只是把标签的字符串值拿到了)
innerHTML # 获取标签对象内的所有值(包括标签)
接着上面的例子,我们使用innerHTML看看获取到什么值?
obj[0].innerHTML
"
sbssbsbsbsbs
<h2 id="111">index1</h2>
"
把包含在div标签下的子标签+字符串都获取到了. var obj = document.getElementById('nid')
obj.innerText # 获取文本内容
obj.innerText = "hello" # 设置文本内容
obj.innerHTML # 获取HTML内容
obj.innerHTML = "<h1>asd</h1>" # 设置HTML内容 总结:innerText 和 innerHTML取文本内容和包含标签的内容
但是又些特殊的标签,就不能使用innerText来获取值,只能使用obj.value来获取值.
特殊的:
input系列
textarea标签
select标签
value属性操作用户输入和选择的值
代码实例1:
<form action="">
<input type="text" name="username" value=''>
<input type="password" name="pwd" value="">
</form> <script>
var obj1 = document.getElementsByName('pwd')[] ;
var obj2 = document.getElementsByName('username')[];
console.log(obj1,obj2)
console.log(obj1.value,obj2.value)
</script>
代码实例2:(代码实现了获取文本内容,并修改文本内容.这个例子要看懂,)
<body>
<input type="text" id="text1">
<input type="button" value="获取input里的值" onclick="getvalue();"/>
<script type="text/javascript"> function getvalue(){
var obj1 = document.getElementById('text1')
var text = obj1.value
alert(text)
obj1.value = ''
}
</script>
</body>
代码实例3:(获取select里的value)
<body>
<select id="n3">
<option value=""></option>
<option value=""></option>
<option value=""></option>
</select>
<input type="button" value="获取input里的值" onclick="getvalue();"/>
<script type="text/javascript"> function getvalue(){
var obj1 = document.getElementById('n3')
console.log(obj1.value)
alert(obj1.value)
}
</script>
</body>
代码实例4:
场景:有a连接,我们希望点击a连接的文本在添加一条一模一样的a连接怎么做?
<body>
<a href="http://www.oldboyedu.com/" onclick="f1();">添加</a>
<script type="text/javascript">
function f1(){
alert()
}
</script>
上面的代码,会出现当你添加a连接,后,f1()里的js代码会执行,但执行完成后,紧接着会跳转到www.oldboyedu.com 这个网站.
那么问题来了.我们不希望在执行完f1()函数后跳转应该怎样实现呢? 实现方法,就是定义a标签的onclick事件反回false,这样就不会跳转了.
于是代码如下:
<body>
<a href="http://www.oldboyedu.com/" onclick="return f1();">添加</a>
<script type="text/javascript">
function f1(){
alert()
return false
}
</script> </body>
小扩展:
有下面这段html代码
<body>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
<script>
var lis = document.getElementsByTagName('li');
for(var i in lis) {
console.log(i);
}
</script>
</body>
用谷歌浏览器打开,你会发现,for循环不仅打印了111,222,333还有其他的一些元素.如下:
length
item
namedItem
这样就不是我们想要的结果了.那么如何解决呢.就用关于数组的第二种for循环方法:
<body>
<ul>
<li></li>
<li></li>
<li></li>
</ul>
<script>
var lis = document.getElementsByTagName('li');
for(var i = ;i<lis.length;i++){
console.log(i)
}
</script>
</body>
浏览器打开此页面,看到console中显示:
接下来看一个小实例:我们看到有些页面让你填写购买商品的数量,然后旁边有一个加号,和减号.那么如何实现的呢?
<body>
<input type="button" value="-" onclick="sub_num();"/>
<div id="num"></div>
<input type="button" value="+" onclick="add_num();"/>
<script>
function add_num(){
var obj = document.getElementById('num');
var get_num = parseInt(obj.innerText);
get_num += ;
obj.innerText = get_num
}
function sub_num(){
var obj = document.getElementById('num');
var get_num = parseInt(obj.innerText);
if(get_num<=){
alert("数量不能为负数")
} else {
get_num -=
obj.innerText = get_num
}
}
</script>
</body>
js 中操作的步骤:
1.找到这个标签
2.获取标签里的字符串
3.将获取到的值加1或者减1
3、创建标签
方式一(采用对象的模式):
var obj = document.createElement('a');
obj.href = "http://www.etiantian.org";
obj.innerText = "老男孩"; var container = document.getElementById('container');
//container.appendChild(obj);
// 对象要被添加的地方,必须使用appendClild(),如果使用container.innerHTML = obj 添加的不是整个标签对象,而是http://www.etiantian.org 这个字符串.
// 记住,如果要使用对象模式,就使用appendChild
//container.insertBefore(obj, container.firstChild);
//container.insertBefore(obj, document.getElementById('hhh'));
方式二:
var container = document.getElementById('container');
var obj = "<input type='text' />";
container.innerHTML = obj;
// 'beforeBegin', 'afterBegin', 'beforeEnd', 'afterEnd'
//container.insertAdjacentHTML("beforeEnd",obj); 前面指定位置,后面那个参数指定要加的对象
4、标签属性
var obj = document.getElementById('container');
固定属性
obj.id
obj.id = "nid"
obj.className
obj.style.fontSize = "88px";
#我们知道在fontSize在style的真实写法是 style = 'font-size = 88px;'
# 所以当通过 obj.style.xxYx 找style里面的元素时,遇到 - 的时候,就把-去掉,并把-后面的字符大写:如font-size 写成 fontSize 自定义属性
obj.setAttribute(name,value)
obj.getAttribute(name)
obj.removeAttribute(name)
5、提交表单
document.geElementById('form').submit()
之前我们做提交表单,都是使用form标签,普通方式的代码如下:
<form action="http://www.sogou.com/web" method="get">
<input name="query" type="text" >
<input type="submit" value="提交">
</form>
这是我们通过submit标签提交的,那么我们想,能不能通过div标签提交?
能,默认肯定不能提交,解决办法那是不是在div中加onclick事件,
提交的流程:
.找到这个要提交的form 标签
. 执行form_obj.submit()方法就可以提交了.
代码如下:
<body>
<form id="form1" action="http://www.sogou.com/web" method="get">
<input name="query" type="text" >
<!--<input type="submit" value="提交">-->
<div onclick="f1();">提交</div>
</form>
<script type="text/javascript">
function f1() {
document.getElementById('form1').submit();
}
</script>
</body>
上面的知识点:不仅submit可以提交form表单,其他也可以.
设置默认要求提交时表单不能为空:
场景:我们知道当我们登录网站,输入用户名和密码时,要通过form标签和input里的submit类型标签.
正常情况下,我们点击submit标签就会把form中的input.value内容提交到后台.
那么如用户只输入用户名没输入密码时,是不是要告诉用户:"你有没填写的字段,不能提交".
实现方法就是在submit标签加上onclick事件,然后去校验几个input标签里是否有值.如果没满足条件就让onclick事件反回false.
具体代码如下:
<body>
<form id="form1" action="http://www.sogou.com/web" method="get">
<input name="query" type="text" >
<input type="submit" onclick="return f3();" value="提22交">
</form>
<script type="text/javascript">
function f3() {
var q = document.getElementsByName('query')[];
if (q.value.trim()){
alert('')
return true;
} else {
alert("");
return false;
}
}
</script>
</body>
6、事件 7、其他功能
console.log()
alert()
confirm()
# confirm 有什么用呢?我们在页面上删除某条纪录,有时会出来一个"确认"和"取消"的窗口,这就是confirm.
确认反回的是true,取消反回的是false
代码举例:
<body>
<input type="button" value="上来啊" onmousemove="MyConfirm();">
<script>
function MyConfirm(){
var ret = confirm("是不是要点!")
alert(ret)
}
</script>
</body>
这是confirm最简单的实现方法,真实开发中,一般情况下confirm弹窗咱们是自己写的,因为默认的太难看了. // URL和刷新
location.href 获取当前html文件的访问路径
location.href = "url" 可以获得,当然也可以赋值,赋值的时候相当于跳转了
window.location.reload() 重新加载 这两个好用处不大 // 定时器
setInterval("alert()",);
clearInterval(obj)
#告诉大家,setInterval其实就是每隔多长时间创建一个线程,用这个东西能做什么呢?可以做标签的滚动效果. setTimeout(); # 和setInterval 用法一样,不一样的是只执行一次.比如说setTimeout('f1()',)意思是过两秒后执行一次f1函数
clearTimeout(obj)
# setTimeout() 的应用场景:我们看到qq邮箱删除邮件的时候,在页面上会提示删除邮件成功,5秒后这个提示字样消失了.就是用setTimeout做的.
# 具体是,当你点击删除的时候,立马跳出删除成功的标签.紧接着在函数中在调用setTimeout('删除这个标签的函数',)
jQuery 简介
学了jQuery后,你不能理解为就不用js和Dom了,应该说复杂的操作都用jQuery操作.而相对于简单的操作,jQuery没必要去封装简单的操作.
jQuery是一个兼容多浏览器的javascript库,核心理念是write less,do more(写得更少,做得更多),对javascript进行了封装,是的更加便捷的开发,并且在兼容性方面十分优秀。
http://www.php100.com/manual/jquery/
我们使用js,dom ,jQuery 最终目的让html页面动起来.
动起来技术实现方法就是让 事件 和 改html文件里的内容 关联起来
改 html 文件内容就需要两部分:
1. 获取要改动的标签
2. 修改
无论是使用js还是使用jQuery都是围绕着上面两个目的进行的 .
所以jQuery提供的方法,从功能上大致就分为两个方法:1.获取标签 2.修改
jQuery实现了几百种方法,多,但是无论多牛B的网站也都没全用到,只会用到那么一些常用的(大概几十种). jQuery之基本选择器
jQuery中提供的用于获取标签的方法都有哪些?
jQuery提供的 "选择器" 和 "筛选器" 两大分类都是用于获取标签的方法.
选择器获得的是结果集,筛选器是从结果集里跳出来指定条件的 很好理解
筛选器: 过滤 查找 串联
最基本的选择器(3种):
$("#id").text(''); #id 选择器,找到1个对象
$("a").text(''); # 标签选择器,找到对象集合,并且内部循环将这些对象的字符串值设置成222
$(".c1").text('') # class选择器,找到 对象集合,并且内部循环将这些对象的字符串值设置成333
上面3中选择器是jQuery中最基本的选择器,一定要会.
还有要会组合使用它们,如:
$("#n3 div .c4 span").text('') # 找到id为n3标签下的div标签下的class为c4下的span标签的字符串值设置成4444
一次查找多个类型的选择器时用逗号隔开,如下:
$("div,a,.c4").text('') 查找所有div,所有a标签以及所有calssname为c4的标签,并把它们的字符串值设置成555
接下来看看一些其他选择器:不要求记住,但是你要知道,当碰到某些场景,你能想起来哪种类型的,能够查到即可.
比较重要的:
属性选择器类:
筛选器以下几种必须要会:
children() 目标标签的儿子们
find() 找到的结果集中find
next() 目标标签的下一个兄弟标签
nextAll() 目标标签的下面的所有兄弟标签
parent() 目标标签的父标签
prev() 目标标签的上一个标签
prevall() 目标标签的上面所有的兄弟标签
siblings() 目标标签的所有兄弟标签
这些筛选器里的方法只要记住,能完成99.99%的工作
python2.0_s12_day13_javascript&Dom&jQuery的更多相关文章
- BOM DOM jQuery
. BOM . location相关 . location.href . location.href="http://www.sogo.com" . location.reload ...
- Python之Web前端Dom, jQuery
Python之Web前端: Dom jQuery ###Dom 一. 什么是Dom? 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它 ...
- javaScript DOM JQuery AJAX
http://www.cnblogs.com/wupeiqi/articles/5369773.html 一 JavaScript JavaScript是一门编程语言,浏览器内置了JavaScript ...
- dom core,html dom,css dom,jquery 中的dom操作
前端开发中为达到某种目的,往往有很多方法:dom core,html dom,jquery; dom core/jquery主要通过函数调用的方式(getAttribute("属性名&quo ...
- Day16 DOM &jQuery
一.本节主要内容 JavaScript 正则表达式 字符串操作的三个方法 DOM(知道就行,一般使用jQuery) 查找: 直接查找: document.getElementById 根据ID获取一个 ...
- Python 一路走来 DOM & Jquery
DOM 查找: 直接查找 间接查找 —getElementById ...
- python运维开发(十六)----Dom&&jQuery
内容目录: Dom 查找 操作 事件 jQuery 查找 筛选 操作 事件 扩展 Dom 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它 ...
- Python学习笔记整理总结【web基础】【web/HTML/CSS/JavaScript/DOM/jQuery】
一.HTML HTML是英文Hyper Text Mark-up Language(超文本标记语言)的缩写,他是一种制作万维网页面标准语言(标记).相当于定义统一的一套规则,大家都来遵守他,这样就可以 ...
- DOM jquery
DOM 文档对象模型(Document Object Model)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM ...
随机推荐
- Ajax的XMLHttpRequest对象的属性和方法总结
1.redayState属性: 当一个XMLHttpRequest对象被创建后,readyState属性别哦是当前对象正处于什么状态:0:未初始化状态:已经建立:1:准备发送状态:此时XMLHttpR ...
- python+spark程序代码片段
处理如此的字符串: time^B1493534543940^Aid^B02CD^Aasr^B叫爸爸^Anlp^B{"domain":"com.abc.system.cha ...
- LeetCode: Trapping Rain Water 解题报告
https://oj.leetcode.com/problems/trapping-rain-water/ Trapping Rain WaterGiven n non-negative intege ...
- C语言 · 最大子阵
历届试题 最大子阵 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个n*m的矩阵A,求A中的一个非空子矩阵,使这个子矩阵中的元素和最大. 其中,A的子矩阵指在A中行和 ...
- buildroot 搭建ftpd 服务器记录
vsftpd 搭建失败,应该是buildroot 文件系统还有操作没有理解透,还需要不断的学习. 所以用轻量级的 ftpd 进行替代, 步骤如下: // ---> make busybox-me ...
- maven打包源码<转>
Plugin: http://maven.apache.org/plugins/maven-source-plugin/ The Source Plugin has five goals: sourc ...
- jQuery 之正则表达式篇
从本文开始,我将陆续的更新关于jQuery源代码的博客.首先,jQuery源代码分析一直是我的一个计划和追求.查看jQuery源代码,探索大牛们深邃的思想,精神的碰撞.Google 搜索不难发现,探索 ...
- import_tasks: tasks/sometasks.yml
- import_tasks: tasks/sometasks.yml when: "'reticulating splines' in output" unarchive模块用 ...
- Fork of LGPL version of JPedal
https://github.com/on-site/JPedal —————————————————————————————————————————————————————————————————— ...
- openfire url get提交 中文乱码问题
原因是它只接受url编码后的中文 如:%E7%BC%96%E7%A0%81%E5%90%8E%E7%9A%84%E4%B8%AD%E6%96%87 会自动转变为:http://127.0.0.1:90 ...