JSRequest是SharePoint提供的一个客户端对象,是在init.js这个文件中定义的(文件位于C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\15\TEMPLATE\LAYOUTS\ 文件夹中),使用这个对象可以用来方便的读取URL中的信息,因为这个对象提供了三个属性:
1.JSRequest.FileName
2.JSRequest.PathName
3.JSRequest.QueryString["Param"]
在使用JSRequest之前,需要首先使用以下代码进行初始化:
JSRequest.EnsureSetup();
在初始化之后就可以使用上面的三个属性了,例如对于一个名字为Product的list,新建一个item的页面(NewForm.aspx)的URL是:
http://server2013/Lists/Product/NewForm.aspx?Source=http%2A%2F%2Fserver2013%2FLists%2FProduct%2FAllItems%2Easpx&RootFolder=
第一个属性JSRequest.FileName用来读取URL中的页面的名字,对于这个Url,页面的名字为NewForm.aspx。
第二个属性JSRequest.PathName用来读取URL中的页面路径,对于这个URL,路径为/Lists/Product/NewForm.aspx。
第三个属性JSRequest.QueryString用来获取URL中的参数,例如URL中的Source参数值可以使用JSRequest.QueryString["Source"]来获取,以下是在这个页面上执行的结果(Chrome浏览器):
以下是这个对象的代码,来自于init.js,还是很简单的,可以看到JSRequest使用EnsureSetup方法分析URL,来获取这三个属性的值。
JSRequest = {
QueryString: null,
FileName: null,
PathName: null,
EnsureSetup: function() {
if (JSRequest.QueryString != null)
return;
JSRequest.QueryString = [];
var queryString = (ajaxNavigate.get_search()).substring(1);
var pairs = queryString.split("&");
var p;
for (var i = 0; i < pairs.length; i++) {
var pair = pairs[i];
p = pair.indexOf("=");
if (p > -1) {
var key = pair.substring(0, p);
var value = pair.substring(p + 1);
JSRequest.QueryString[key] = value;
}
}
var path = JSRequest.PathName = window.location.pathname;
p = path.lastIndexOf("/");
if (p > -1) {
JSRequest.FileName = path.substring(p + 1);
}
else {
JSRequest.PageName = path;
}
}
};