| 
 | 
 
 
showDialog 与 showWindow 主要用于在前端页面输出对话框或者窗口。根据函数的名字可以知道,showDialog 主要是显示对话框,而 showWindow 可以显示窗口。其实两者主要的区别是:showDialog 只能显示 Discuz 内置的对话框,而 showWindow 可以显示用户自定义的对话框或者窗口。 
关于 showDialog 与 showWindow 的参数定义,请参考:Discuz!X 通用JavaScript脚本(AJAX使用和弹层) 
 
下文着重介绍 showDialog 与 showWindow 的应用实例。 
 
1、实例一,使用 showDialog 显示一个确认对话框,并根据用户的选择输出不同的信息。 
参考代码如下(添加到主模板文件 test.htm 即可): 
- <a href="javascript:;" onclick="showDialog('msg', 'confirm', 'Pls Confirm', function(){alert('Confirm');},1,function(){alert('Cancel');})">showDialog Test</a>
 
  复制代码 Note:在使用 showDialog 的时候需要注意,如果使用了 'closetime' 参数,在 X3.2 中会直接调用 showPrompt() 在页面中间显示 msg 的信息,而在 X2.5 及以前版本则还是使用对话框的形式显示 msg 信息。 
 
2、实例二,使用 showWindow 显示一个用户自定义的窗口。 
用户自定义的窗口可以使用模板的方式提供,也可以直接将 HTML 代码直接写在 PHP 程序代码中,推荐使用模板方式。 
在插件的 template 目录下增加一个窗口模板文件 window.htm 参考代码如下: 
- {template common/header}
 
  
- <h3 class="flb">
 
 -         <em>Title</em>
 
 -         <span>
 
 -                 <a href="javascript:;" class="flbc" onclick="hideWindow('test_win')" title="{lang close}">{lang close}</a>
 
 -         </span>
 
 - </h3>
 
  
- <div style="width:400px;padding:10px;">
 
 -         <div class="bm bmw">
 
 -                 <div class="bm_c">
 
 -                         Your Formhash is : {FORMHASH}
 
 -                 </div>
 
 -         </div>
 
 - </div>
 
  
- {template common/footer}
 
  复制代码 其中 H3 标签内的部分,是 Discuz 内置风格的窗口头部,包括了 Title 部分和一个关闭按钮,这里需要注意的是:为了能正确关闭窗口,hideWindow() 中的第一个参数,必须与 showWindow() 的第一个参数一致,本例中为:'test_win'。 
接下来是窗体部分,即 div 标签内的内容,用户可以自己的需要进行设计。 
 
主模板文件 test.htm 中添加调用代码: 
- <a href="javascript:;" onclick="showWindow('test_win', 'plugin.php?id=test&act=sw')">showWindow Test</a>
 
  复制代码 然后在后台主模块文件 test.inc.php 中添加对应的 case 分支用户输出窗口,参考代码如下: 
-  case 'sw':
 
  
-                 include template('test:window');
 
  
-                 exit;
 
 
  复制代码 Note:这里的处理方式与介绍 ajaxget 时有些不一样,让我们回顾一下在 ajaxget 的实例中后台是如何处理的,参考代码如下: 
-  case 'ajaxgetstring':
 
  
-                 sleep(2);
 
  
-                 include template('common/header');
 
 -                 echo FORMHASH;
 
 -                 include template('common/footer');
 
  
-                 exit;
 
 
  复制代码 区别在于本例中没有使用 include template('common/header'); 与 include template('common/footer'); 原因是在模板 window.htm 中以及包含了 Discuz 的标准头部和尾部,这两种方式完全等效。 
 
 
本节完 
 |   
 
 
 
 |