很多时候我们需要改变MOSS自带的一些按钮的默认事件,比如我自己订制的显示页面点击连接进入到了列表的显示页面DispForm,不过浏览后点击关闭按钮呢他会自动跳转到MOSS的列表的界面,这很不好,所以这种情况我们需要定制MOSS的默认行为了,我自己认为最简单的方式莫过于用脚本来做了。
拿DispForm的关闭按钮来说,首先到DispForm,然后添加一个内容编辑器web部件
然后在源编辑器放入我们的脚本
1<script type="text/javascript">
2function resetCloseButton(){
3 var buttons = document.getElementsByTagName("INPUT");
4 var count = buttons.length;
5 for(var i = 0; i < count; i++){
6 var button = buttons[i];
7 if(button.type.toLowerCase() != "button"){
8 continue;
9 }
10 var id = button.id.toLowerCase();
11 var l = id.indexOf("goback");
12 if(l != -1 && l == id.length - 6){
13 button.onclick = function(){
14 alert('Reset OK');
15 return false;
16 }
17 }
18 }
19}
20_spBodyOnLoadFunctionNames.push("resetCloseButton");
21</script>
2function resetCloseButton(){
3 var buttons = document.getElementsByTagName("INPUT");
4 var count = buttons.length;
5 for(var i = 0; i < count; i++){
6 var button = buttons[i];
7 if(button.type.toLowerCase() != "button"){
8 continue;
9 }
10 var id = button.id.toLowerCase();
11 var l = id.indexOf("goback");
12 if(l != -1 && l == id.length - 6){
13 button.onclick = function(){
14 alert('Reset OK');
15 return false;
16 }
17 }
18 }
19}
20_spBodyOnLoadFunctionNames.push("resetCloseButton");
21</script>
写的挺啰嗦,呵呵。有好的框架来整则非常容易了,比如JQuery,用$来找INPUT然后规定id$="GoBack"就应该找到了,然后用.each来做自己的事。。
_spBodyOnLoadFunctionNames是MOSS提供的脚本,用于页面的onload执行,我们用_spBodyOnLoadFunctionNames.push把自己的东西塞进去就ok了。
Update: DispForm页面启用编辑的方法:在URL上加一个参数 &DisplayMode=Design就可以了