Discuz教程网

[二次开发] discuz 通过ajax动态获得的javascript不执行问题

[复制链接]
authicon dly 发表于 2012-10-13 14:17:12 | 显示全部楼层 |阅读模式
今天在DZ X2.5开发中插件发现有个诡异的现象,在member/login.htm里钩子logging_input处插入了一段js代码,模板通过ajax被前台以弹出层形式调出(其实就是登录框弹出层),此时js正常执行,关闭弹出层,再一次弹出js就不执行了。

解决办法:在js标签上加上reload=1就OK了
  1. <script type="text/javascript" reload="1">
  2. //todo...
  3. </script>
复制代码

问题解决的同时了解到了dz 异步获取xml文档后,激活xml文档里js脚本的机制。

关键代码可以查看static/js/common.js
  1. function evalscript(s) {
  2. if(s.indexOf('<script') == -1) return s;
  3. var p = /<script[^\>]*?>([^\x00]*?)<\/script>/ig;
  4. var arr = [];
  5. while(arr = p.exec(s)) {
  6. var p1 = /<script[^\>]*?src="([^\>]*?)"[^\>]*?(reload="1")?(?:charset="([\w\-]+?)")?><\/script>/i;
  7. var arr1 = [];
  8. arr1 = p1.exec(arr[0]);
  9. if(arr1) {
  10. appendscript(arr1[1], '', arr1[2], arr1[3]);
  11. } else {
  12. p1 = /<script(.*?)>([^\x00]+?)<\/script>/i;
  13. arr1 = p1.exec(arr[0]);
  14. appendscript('', arr1[2], arr1[1].indexOf('reload=') != -1);
  15. }
  16. }
  17. return s;
  18. }
复制代码

作者:xiangzi1113



上一篇:转载:温馨出门,曼谷旅店
下一篇:discuz x2.5插件开发傻瓜图文教程,用demo说话
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2024-5-17 09:41

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表