今天在DZ X2.5开发中插件发现有个诡异的现象,在member/login.htm里钩子logging_input处插入了一段js代码,模板通过ajax被前台以弹出层形式调出(其实就是登录框弹出层),此时js正常执行,关闭弹出层,再一次弹出js就不执行了。
解决办法:在js标签上加上reload=1就OK了
- <script type="text/javascript" reload="1">
- //todo...
- </script>
复制代码
问题解决的同时了解到了dz 异步获取xml文档后,激活xml文档里js脚本的机制。
关键代码可以查看static/js/common.js
- function evalscript(s) {
- if(s.indexOf('<script') == -1) return s;
- var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;
- var arr = [];
- while(arr = p.exec(s)) {
- var p1 = /<script[^\>]*?src="([^\>]*?)"[^\>]*?(reload="1")?(?:charset="([\w\-]+?)")?><\/script>/i;
- var arr1 = [];
- arr1 = p1.exec(arr[0]);
- if(arr1) {
- appendscript(arr1[1], '', arr1[2], arr1[3]);
- } else {
- p1 = /<script(.*?)>([^\x00]+?)<\/script>/i;
- arr1 = p1.exec(arr[0]);
- appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);
- }
- }
- return s;
- }
复制代码
作者:xiangzi1113 |
上一篇: 转载:温馨出门,曼谷旅店下一篇: discuz x2.5插件开发傻瓜图文教程,用demo说话
|