嗨,老铁,欢迎来到我的博客!

如果觉得我的内容还不错的话,可以关注下我在 segmentfault.com 上的直播。我主要从事 PHP 和 Java 方面的开发,《深入 PHP 内核》作者之一。

[视频直播] PHP 进阶之路 - 亿级 pv 网站架构的技术细节与套路 直播中我将毫无保留的分享我这六年的全部工作经验和踩坑的故事,以及会穿插着一些面试中的 考点难点加分点

周梦康 发表于 2014-07-04 5489 次浏览 标签 : javascriptPHPCMS

点击图片的时候触发\statics\js\swfupload\swf2ckeditor.js里面的flashupload()函数。

onclick="flashupload('thumb_images', '附件上传','thumb',thumb_images,'1,jpg|jpeg|gif|png|bmp,1,,,0','content','20','673a7bdb2c201df7d3b78a7d5b9acd7a');return false;"

PHPCMS后台上传缩略图过程解析,也是一个 apply 运用的好实例

给该函数加上参数注解

/**
 * 上传功能
 * @param uploadid      dialog id
 * @param name          dialog名称
 * @param textareaid    最后数据返回插入的容器id
 * @param funcName      回调函数
 * @param args          参数
 * @param module        所属模块
 * @param catid         栏目id
 * @param authkey       参数密钥,验证args
 */
function flashupload(uploadid, name, textareaid, funcName, args, module, catid, authkey) {
    var args = args ? '&args='+args : '';
    var setting = '&module='+module+'&catid='+catid+'&authkey='+authkey;
    window.top.art.dialog({
    	title:name,
    	id:uploadid,
    	iframe:'index.php?m=attachment&c=attachments&a=swfupload'+args+setting,width:'500',height:'420'
    }, function(){ 
    	if(funcName) {
    		funcName.apply(this,[uploadid,textareaid]);
    	}else {
    		submit_ckeditor(uploadid,textareaid);
    	}
    }, function(){
    	window.top.art.dialog({id:uploadid}).close()
    });
}

funcName函数对象作为参数传入flashupload函数,然后使用apply()方法来实现funcName函数的动态调用。关于apply的更多说明可以参考:http://mengkang.net/234.html

根据上面onclick的事件代码可以知道回调了thumb_images这个函数,该函数在/statics/js/content_addtop.js里做了申明

function thumb_images(uploadid,returnid) {
	var d = window.top.art.dialog({id:uploadid}).data.iframe;
	var in_content = d.$("#att-status").html().substring(1);
	if(in_content=='') return false;
	if(!IsImg(in_content)) {
		alert('选择的类型必须为图片类型');
		return false;
	}
	if($('#'+returnid+'_preview').attr('src')) {
		$('#'+returnid+'_preview').attr('src',in_content);
	}
	$('#'+returnid).val(in_content);
}

我也也可以在这个回调函数里做一些自定义的操作,比如发送一个请求生成缩略图。

但是我后来发现还是到表单提交之后去生成缩略图,因为有在确定提交表单前可能会更换很多次。那么就无谓的生成了多余的缩略图了。而且对于采集而来的文章,缩略图已经生成好了,而不会去触发点击,所以也不会触发回调。所以还是放到最后服务端处理。

嗨,老铁,欢迎来到我的博客!

如果觉得我的内容还不错的话,可以关注下我在 segmentfault.com 上的直播。我主要从事 PHP 和 Java 方面的开发,《深入 PHP 内核》作者之一。

[视频直播] PHP 进阶之路 - 亿级 pv 网站架构的技术细节与套路 直播中我将毫无保留的分享我这六年的全部工作经验和踩坑的故事,以及会穿插着一些面试中的 考点难点加分点

评论列表

回复 杨佰 2014-08-05 15:40:29
我把你博客的样式抄袭了一下,给自己用用!哈哈哈!