分享

URL库及其函数

 5度沙漠 2005-12-23

来源:Mocomor.com 

URL库及其函数

WMLScript的URL库包含一系列与绝对URL地址和相对URL地址操作相关的函数,利用它们可以实现对外部文件、外部函数等外部资源的合法调用。URL库函数主要包括escapeString、getBase、getFragment、getHost、getScheme、getPath、getPort、getQuery、getReferer、getParameters、isValid、loadString、resolve和unescapeString,本节我们就讲解这些库函数的功能和用法。
9.4.1 isValid函数
isValid函数用于判断给定URL地址的格式是否正确。如果URL地址合法,则该函数会返回true,否则返回false。isValid函数可以判断绝对和相对URL地址的格式,判断时相对URL不必转化为绝对URL,而是可以直接判断。isValid函数的语法格式为:
URL.isValid(url)
它的参数url是字符串形式的URL地址,返回值为布尔型的true|false。如果给出的参数内容不符合要求,则isValid函数会返回无效值invalid。
WMLScript中合法的URL地址格式为:
<scheme>://<host>:<port>/<path>;<params>?<query>#<fragment>
凡不符合该格式的URL地址,isValid函数均会判断其为false或invalid。
下面我们给出使用isValid函数判断URL地址的几个例子:

var a = URL.isValid("http://w./script#func( )");    // a = true
var b = URL.isValid("../common#test( )");          // b = true
var c = URL.isValid("experimental?://www./cont");    // c = false

9.4.2 getScheme函数
getScheme函数用于寻找并返回给定URL地址中的Scheme部分。如果给定URL地址中没有Scheme部分,则该函数返回空字符串。如果给定的URL地址无效,则会返回invalid。getScheme函数也支持绝对和相对URL地址,操作时也不会把相对URL地址转化为绝对URL地址,而是可以直接操作。该函数的语法格式如下:
URL.getScheme(url)
它的参数url必须是字符串形式的URL地址。下面是使用getScheme函数的几个例子:

var a = URL.getScheme("http://w./path#frag");      // a = "http"
var b = URL.getScheme("w./path#frag");        // b = ""
var c = URL.getScheme("http://www./script#func( )");  // c = "http"

9.4.3 getHost函数
getHost函数用于获取并返回给定URL地址中的主机名,即Host部分。如果URL地址中没有给出主机名,则该函数返回空字符串。getHost函数也支持绝对和相对URL地址,操作时也不进行相对URL地址向绝对URL地址的转换。getHost函数的语法格式为:
URL.getHost(url)
它的参数url必须为字符串形式的URL地址,返回值为字符串型的主机名。如果getHost函数无法解析给出的URL地址,那么它将返回无效值invalid。
使用getHost函数的例子如下:

var a = URL.getHost("http://w./path#frag");        // a = "w."
var b = URL.getHost("path#frag");              // b = ""
var c = URL.getHost("http://www./script#func( )");  // c = "www."

9.4.4 getPort函数
getPort函数用于获取并返回给定URL地址中的通信端口号,即port部分。如果URL地址中没有给出端口号,则该函数返回空字符串。getPort函数也支持绝对和相对的URL地址,操作时无需转换相对URL地址为绝对URL地址。它的语法格式为:
URL.getPort(url)
它的参数url取值应为字符串形式的URL地址,函数返回值为字符串形式的端口号。如果URL地址中的端口号无法被getPort函数所解析,那么该函数就会返回无效值invalid。
getPort函数的使用十分简单,下述几条语句就是用它来获取端口号的例子:

var a = URL.getPort("http://w.:80/path#frag");            // a = "80"
var b = URL.getPort("http://www./path#frag");        // b = ""
var c = URL.getPort("http://www.:8080/script#func( )");    // c = "8080"

9.4.5 getPath函数
用于获取和返回给定URL地址中的路径(path)部分。如果URL地址中没有给出路径,那么该函数就会返回空字符串。getPath函数也支持绝对和相对的URL地址,操作时不必将相对URL地址转化为绝对URL地址。它的语法格式为:
URL.getPath(url)
它的参数url取值也应为字符串形式的URL地址,函数返回值为字符串形式的路径。如果getPath函数无法解析URL地址中的路径,那么就会返回无效值invalid。

var a = URL.getPath("http://www./home/sub/comp#frag");
// 返回的路径为a = "/home/sub/comp"
var b = URL.getPath("../home/sub/comp#frag");    // 返回的路径为b = "../home/sub/comp"
var c = URL.getPath("http://www.:8080/program/WML/Script/script#func( )");
// 返回的路径为c = "/program/WML/Script/script"

9.4.6 getParameters函数
getParameters函数用于获取和返回给定URL地址中的参数部分,即params部分。如果URL地址中没有指定相关参数(params),那么函数就会返回空字符串。该函数也同时支持绝对和相对的URL地址,操作相对URL地址无需将它转化为绝对URL地址。getParameters函数的语法格式如下:
URL.getParameters(url)
它的参数url取值也应为字符串形式的URL地址,函数返回值为字符串形式的参数(params)。如果给定的URL地址无效,则getParameters函数返回无效值invalid。
作为举例,我们给出使用getParameters函数获取参数的例子:

var a = URL.getParameters("http://www./script;3;2?x=1&y=3");    // a = "3;2"
var b = URL.getParameters("../script;3;2?x=1&y=3");            // b = "3;2"
var c = URL.getParameters("http://www.:8080/script#func( )");      // c = ""

9.4.7 getQuery函数
getQuery函数用于获取和返回给定URL地址中的query部分。如果URL地址中没有query部分,则函数返回空字符串。该函数也同时支持绝对和相对的URL地址,操作时相对URL地址不必转化为绝对URL地址。getQuery函数的语法格式为:
URL.getQuery(url)
它的参数url取值应为字符串形式的URL地址,函数返回值为字符串形式的query部分。如果给定的URL地址无效,则getQuery函数返回无效值invalid。
例如,下面就是使用getQuery函数的例子:

var a = URL.getQuery("http://www./script;3;2?x=1&y=3");    // a = "x=1&y=3"
var b = URL.getQuery("../script;3;2?x=1&y=3");            // b = "x=1&y=3"
var c = URL.getQuery("http://www.:8080/script#func( )");    // c = ""

9.4.8 getFragment函数
用于获取和返回给定URL地址中的fragment部分。如果其中没有fragment部分,则函数返回空字符串。getFragment函数也支持相对和绝对的URL地址,并且操作时相对的URL也不进行绝对URL的转换。getFragment函数的语法格式如下:
URL.getFragment(url)
它的参数url应取字符串形式的URL地址,函数返回值为字符串形式的fragment部分。如果给定的URL地址无效,则getFragment函数返回无效值invalid。
使用getFragment函数获取fragment部分的例子如下:

var a = URL.getFragment("http://www./cont#frag");      // a = "frag"
var b = URL.getFragment("../script;3;2?x=1&y=3");            // b = ""
var c = URL.getFragment("http://www.:8080/script#func( )");    // c = "func( )"

9.4.9 getBase函数
getBase函数用于获取和返回当前WMLScript文件的不含fragment部分的绝对URL地址。它没有参数,返回值为字符串形式的绝对URL地址。其语法格式为:
URL.getBase( )
例如,当前测试的WMLScript文件位于服务器www.的test目录中,则使用如下的getBase函数测试时,可返回结果a = "http://www./test":
var a = URL.getBase( );    // 结果为a = "http://www./test"
9.4.10 getReferer函数
getReferer函数用于获取和返回调用当前WMLScript文件的最小的相对URL地址。如果文件调用时没有指定URL地址,那么该函数返回空字符串。其语法格式为:
URL.getReferer( )
它没有参数,返回值为字符串形式的相对URL地址。
例如,调用的当前WMLScript文件位于服务器www.的test目录中,文件名为app.wml,则使用getReferer函数测试时则可返回结果referer = "app.wml":
var referer = URL.getReferer();    // 结果为referer = "app.wml"
9.4.11 resolve函数
resolve函数根据给定的baseUrl和embeddedUrl两个URL地址的参数值,组合生成一个绝对URL地址,并返回该地址。如果参数embeddedUrl的值已经是一个绝对的URL地址,则函数直接把embeddedUrl的值作为结果返回。resolve函数的语法格式如下:
URL.resolve(baseUrl, embeddedUrl)
它的两个参数baseUrl和embeddedUrl都是字符串形式的URL地址,返回值结果也为字符串形式的URL地址。如果参数不合法,则函数返回无效值invalid。
下面就是应用resolve函数合成一个有效的绝对URL地址的例子:
var a = URL.resolve("http:///","foo.vcf");    // 结果为a = "http:///foo.vcf"
9.4.12 escapeString函数
escapeString函数的功能是把给定字符串string里面的特殊字符进行转义序列的重新编码处理。这种字符即WML和WMLScript中所指的转义字符,包括ASCII码中的控制字符和空格,以及一些保留字作用的特殊符号:";"、"/"、"?"、":"、"@"、"&"、"="、"+"、"$"、","、"{"、"}"、"|"、"\"、"^"、"["、"]"、"‘"、"<"、">"、"#"、"%"、"""等。
escapeString函数的语法格式为:
URL.escapeString(string)
它仅对所给URL地址中的转义字符进行转换,而不进行URL地址的解析和定位。如果URL地址中包含了无法进行转换的无效字符,则函数返回无效值invalid。
例如,使用escapeString函数进行下述转换处理时,我们可以得到a = "http%3a%2f%2fw.%2fdck%3fx%3d%7f%23crd"的转换结果:

var a = URL.escapeString("http://w./dck?x=\u007f#crd");
          // 结果为a = "http%3a%2f%2fw.%2fdck%3fx%3d%7f%23crd"

9.4.13 unescapeString函数
与escapeString函数的作用相反,unescapeString函数可以将给定的转义字符串string进行还原。而且是只做字符的转换处理,不对URL地址进行其他任何解析处理。unescapeString函数的语法格式为:
URL.unescapeString(string)
转义字符还原后,unescapeString函数返回的结果是字符串形式的URL地址。如果转义字符串string中包含了不合法的转义字符,该函数返回无效值invalid。
例如,下面我们给出了已经转义的字符串a,利用unescapeString函数对它进行还原后,可以得到原来的URL地址:

var a = "http%3a%2f%2fw.%2fdck%3fx%3d12%23crd";
var b = URL.unescapeString(a);        // 结果为b = "http://w./dck?x=12#crd"

9.4.14 loadString函数
该函数用于获取和返回一个由给定参数url与contentType所代表的内容形式,其语法格式为:
URL.loadString(url, contentType)
其中参数url是给定的字符串形式的绝对URL地址,参数contentType是给定的字符串形式的拟采用的内容类型。
特别地,给定的contenttype必须遵循下述规则,否则会导致错误。
(1) 只能指定一个cnotenttype。即整个字符串只允许有一个内容类型(contenttype),并且不能有多余的前缀和后缀。
(2) 类型必须是text,但是子类型可以是其他的类型。因此,类型的前缀必须是"text/"。
loadString函数的运行行为是这样的:首先装入指定的contenttype和url,同时将其他缺省的属性也一并装入进来,然后根据装入情况进行相应处理。如果装入成功,则返回符合给定contenttype的内容,并且将content转换为字符串。如果装入失败,或者返回的content内容是错误的,那么就返回一个指定的错误代码。如果使用HTTP或WSP协议,则返回HTTP的错误代码。
如果用户给定的是一个无效的contenttype,那么loadString函数就会返回无效值invalid。
下面的简单例子给出了使用loadString函数的一般方法:

var myUrl = "http://www./vcards/myaddr.vcf";
myCard = URL.loadString(myUrl, "text/x-vcard");

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多