dz中的js函数showWindow

Mine视频解析插件中, 编辑器弹出添加视频窗口时,用到了discuz系统中的js函数showWindow, 这个函数在第一次弹出窗口时,会加载窗口内容中的js,第二次就不再加载。这导致有些数据和绑定的点击事件失效,怎么处理?

查看了js代码,在/static/js/common.js文件中,有个evalscript的函数,代码如下

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;
}

仔细看这个代码,我们发现,如果在script标签中加上 reload=”1″ ,那么每次加载弹窗,都会执行这些js,测试一下,果不其然。


Mine吧 » dz中的js函数showWindow

发表评论