Uri

uri 解析模块,用于处理URL。可以直接通过KISSY.Uri调用:

var uri = new KISSY.Uri('http://url');
uri.do_somethine();// uri 执行相关的方法

也可以通过沙箱来调用

KISSY.use('uri',function(S,Uri){
    // 使用 Uri
});

clone(),克隆一个实例

clone() => Uri::返回一个当前 uri 实例的克隆对象

var one = new Uri('http://www.g.cn/x');
var two = one.clone() // 克隆一个新的Uri实例

resolve()

resolve (other) => Uri:合并解析出一个完整的URL,返回新的 uri 实例

var one = new Uri('http://www.g.cn/x');
one.resolve('foo').toString() // => http://www.g.cn/foo
one.resolve(new Uri('?foo')).toString() // => http://www.g.cn/x?foo

getScheme() 得到协议部分

用法:getScheme () => String

new Uri('http://www.g.cn/x').getScheme() // => http

setScheme() 设置协议部分

设置 uri 实例的 scheme 部分

new Uri('http://www.g.cn/x').setScheme('ftp').getScheme() // => ftp

getHostname() 得到hostname

new Uri('http://www.g.cn:8888/x').getHostname() // => www.g.cn

setHostname() 设置hostname

new Uri('http://www.g.cn:8888/x').setHostname('www.google.com').toString()
// => http://www.google.com:8888/x

getUserInfo() 得到用户信息

获取当前 uri 实例的 user info

new Uri('http://my:pass@www.g.cn:8888/x').getUserInfo() // => 'my:pass'

setUserInfo() 设置用户信息

设置当前 uri 实例的 user info

new Uri('http://my:pass@www.g.cn:8888/x').setUserInfo('m:p').getUserInfo()
// => 'm:p'

getPort() 获取当前 uri 实例的端口值

new Uri('http://my:pass@www.g.cn:8888/x').getPort()
// => '8888'

setPort() 设置当前 uri 实例的端口值

new Uri('http://my:pass@www.g.cn:8888/x').setPort('88').toString()
// => http://my:pass@www.g.cn:88/x

getPath() 获取当前 uri 实例的路径

new Uri('http://www.g.cn/x').getPath()
// => /x

setPath() 设置当前 uri 实例的路径

new Uri('http://www.g.cn/x').setPath('/y').toString()
// => http://www.g.cn/y

getQuery() 获取当前 uri 实例的查询参数实例

new Uri('http://www.g.cn/x?x=1').getQuery().get('x')
// => 1

setQuery() 设置当前 uri 实例的查询参数

参数:query ({String|Uri.Query}) – 字符串或者Uri.Query实例

new Uri('http://www.g.cn/x?x=1').setQuery('y=1').toString();
// => http://www.g.cn/x?y=1

new Uri('http://www.g.cn/x?x=1').setQuery(new Uri.Query('y=1')).toString();
// => http://www.g.cn/x?y=1

getFragment() 获取当前 uri 实例的 hash

new Uri('http://www.g.cn/x?x=1#y=2').getFragment() // => y=2

setFragment() 设置当前 uri 实例的 hash

参数:hash ({String}) – hash值

new Uri('http://www.g.cn/x?x=1#y=2').setFragment('x=3').toString()
// => http://www.g.cn/x?x=1#x=3

isSameOriginAs() 验证同源

验证当前 uri 实例和 other 是否是同源关系(hostname port scheme 相同)

new Uri('http://www.g.cn/x?x=1#y=2')
.isSameOriginAs(new Uri('http://www.g.cn:88/x?x=1#y=2')) // => false

toString() 序列化当前 uri 实例的 hash

参数:arr ({Boolean}) – 同 param() 同名参数

new Uri('http://www.g.cn/x?x=1&x=2').toString(false)
// => 'http://www.g.cn/x?x=1&x=2'

new Uri('http://www.g.cn/x?x=1&x=2').toString(true)
// => 'http://www.g.cn/x?x%5b%5d=1&x%5b%5d=2'
Fork me on GitHub