sharepoint的功能强大是公认的,事件触发和基于WSS的扩展都不错,本人是新手,正在研究他的js调用机制,
主要的js文件是在LAYOUTS/2052下的init.js和core.js,大家发现了么,呵呵,先看看core.js文件
这个是验证网页
function PageUrlValidation(url)
{
if (url.substr(0, 4) !="http" && url.substr(0,1) !="/")
{
var L_InvalidPageUrl_Text="无效的网页 URL: ";
alert(L_InvalidPageUrl_Text);
return "";
}
else
return url;
}
function commonShowModalDialog(url, features, callback, args)
{
if (document.getElementById("__spPickerHasReturnValue") !=null)
document.getElementById("__spPickerHasReturnValue").value="";
if (document.getElementById("__spPickerReturnValueHolder") !=null)
document.getElementById("__spPickerReturnValueHolder").value="";
var rv;
if (window.showModalDialog)
{
rv=window.showModalDialog(url, args, features);
if(callback)
callback(rv);
}
else
{
var defaultWidth=500, defaultHeight=550, defaultScrollbars="yes";
if(!features) features="width="+defaultWidth+",height="+defaultHeight;
else
{
function assocArray() { return new Array(); }
function assocArray_add(array, key, value)
{
array.push(key);
array[key]=value;
}
function assocArray_keys(array)
{
var keys=new Array();
for(var i=0; i<array.length; i++) keys.push(array[i]);
return keys;
}
var feats=assocArray(), fre, split;
if(features.search(/^(/s*/w+/s*:/s*.+?/s*)(;/s*/s*/w+/s*:/s*.+?/s*)*(;/s*)?$/) !=-1)
{
fre=/^/s*(/w+)/s*:/s*(.+?)/s*$/;
split=features.split(//s*;/s*/);
}
else
{
fre=/^/s*(/w+)/s*=/s*(.+?)/s*$/;
split=features.split(//s*,/s*/);
}
for(var feat in split)
{
var kv=fre.exec(split[feat]);
if(kv && kv.length==3) assocArray_add(feats, kv[1].toLowerCase(), kv[2]);
}
if(!feats["width"]) assocArray_add(feats, "width", feats["dialogwidth"] || defaultWidth);
if(!feats["height"]) assocArray_add(feats, "height", feats["dialogheight"] || defaultHeight);
if(!feats["scrollbars"]) assocArray_add(feats, "scrollbars", feats["scroll"] || defaultScrollbars);
features='';
var keys=assocArray_keys(feats);
for(var i in keys)
{
if(features) features+=",";
features+=keys[i]+"="+feats[keys[i]];
}
}
var modalDialog=window.open(url, '_blank', features+',modal=yes,dialog=yes');
modalDialog.dialogArguments=args;
window.οnfοcus=function() {
var bHasReturnValue
=(document.getElementById("__spPickerHasReturnValue") !=null) &&
(document.getElementById("__spPickerHasReturnValue").value=="1");
if (modalDialog && !modalDialog.closed && !bHasReturnValue)
{
modalDialog.focus();
}
else
{
window.οnfοcus=null;
if(callback)
{
if (typeof(modalDialog.returnValue) !="undefined")
{
rv=modalDialog.returnValue;
callback(rv);
}
else if (document.getElementById("__spPickerHasReturnValue") !=null &&
document.getElementById("__spPickerHasReturnValue").value=="1" &&
document.getElementById("__spPickerReturnValueHolder") !=null)
{
rv=document.getElementById("__spPickerReturnValueHolder").value;
callback(rv);
}
}
}
}
}
}
function setModalDialogReturnValue(wnd, returnValue)
{
if (wnd.opener !=null &&
wnd.opener.document.getElementById('__spPickerHasReturnValue') !=null &&
wnd.opener.document.getElementById('__spPickerReturnValueHolder') !=null)
{
wnd.opener.document.getElementById('__spPickerHasReturnValue').value='1';
wnd.opener.document.getElementById('__spPickerReturnValueHolder').value=returnValue;
}
wnd.returnValue=returnValue;
}