| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 | 
							- ///import core
 
- ///commands 远程图片抓取
 
- ///commandsName  catchRemoteImage,catchremoteimageenable
 
- ///commandsTitle  远程图片抓取
 
- /**
 
-  * 远程图片抓取,当开启本插件时所有不符合本地域名的图片都将被抓取成为本地服务器上的图片
 
-  */
 
- UE.plugins['catchremoteimage'] = function () {
 
-     var me = this,
 
-         ajax = UE.ajax;
 
-     /* 设置默认值 */
 
-     if (me.options.catchRemoteImageEnable === false) return;
 
-     me.setOpt({
 
-         catchRemoteImageEnable: false
 
-     });
 
-     me.addListener("afterpaste", function () {
 
-         me.fireEvent("catchRemoteImage");
 
-     });
 
-     me.addListener("catchRemoteImage", function () {
 
-         var catcherLocalDomain = me.getOpt('catcherLocalDomain'),
 
-             catcherActionUrl = me.getActionUrl(me.getOpt('catcherActionName')),
 
-             catcherUrlPrefix = me.getOpt('catcherUrlPrefix'),
 
-             catcherFieldName = me.getOpt('catcherFieldName');
 
-         var remoteImages = [],
 
-             imgs = domUtils.getElementsByTagName(me.document, "img"),
 
-             test = function (src, urls) {
 
-                 if (src.indexOf(location.host) != -1 || /(^\.)|(^\/)/.test(src)) {
 
-                     return true;
 
-                 }
 
-                 if (urls) {
 
-                     for (var j = 0, url; url = urls[j++];) {
 
-                         if (src.indexOf(url) !== -1) {
 
-                             return true;
 
-                         }
 
-                     }
 
-                 }
 
-                 return false;
 
-             };
 
-         for (var i = 0, ci; ci = imgs[i++];) {
 
-             if (ci.getAttribute("word_img")) {
 
-                 continue;
 
-             }
 
-             var src = ci.getAttribute("_src") || ci.src || "";
 
-             if (/^(https?|ftp):/i.test(src) && !test(src, catcherLocalDomain)) {
 
-                 remoteImages.push(src);
 
-             }
 
-         }
 
-         if (remoteImages.length) {
 
-             catchremoteimage(remoteImages, {
 
-                 //成功抓取
 
-                 success: function (r) {
 
-                     try {
 
-                         var info = r.state !== undefined ? r:eval("(" + r.responseText + ")");
 
-                     } catch (e) {
 
-                         return;
 
-                     }
 
-                     /* 获取源路径和新路径 */
 
-                     var i, j, ci, cj, oldSrc, newSrc, list = info.list;
 
-                     for (i = 0; ci = imgs[i++];) {
 
-                         oldSrc = ci.getAttribute("_src") || ci.src || "";
 
-                         for (j = 0; cj = list[j++];) {
 
-                             if (oldSrc == cj.source && cj.state == "SUCCESS") {  //抓取失败时不做替换处理
 
-                                 newSrc = catcherUrlPrefix + cj.url;
 
-                                 domUtils.setAttributes(ci, {
 
-                                     "src": newSrc,
 
-                                     "_src": newSrc
 
-                                 });
 
-                                 break;
 
-                             }
 
-                         }
 
-                     }
 
-                     me.fireEvent('catchremotesuccess')
 
-                 },
 
-                 //回调失败,本次请求超时
 
-                 error: function () {
 
-                     me.fireEvent("catchremoteerror");
 
-                 }
 
-             });
 
-         }
 
-         function catchremoteimage(imgs, callbacks) {
 
-             var params = utils.serializeParam(me.queryCommandValue('serverparam')) || '',
 
-                 url = utils.formatUrl(catcherActionUrl + (catcherActionUrl.indexOf('?') == -1 ? '?':'&') + params),
 
-                 isJsonp = utils.isCrossDomainUrl(url),
 
-                 opt = {
 
-                     'method': 'POST',
 
-                     'dataType': isJsonp ? 'jsonp':'',
 
-                     'timeout': 60000, //单位:毫秒,回调请求超时设置。目标用户如果网速不是很快的话此处建议设置一个较大的数值
 
-                     'onsuccess': callbacks["success"],
 
-                     'onerror': callbacks["error"]
 
-                 };
 
-             opt[catcherFieldName] = imgs;
 
-             ajax.request(url, opt);
 
-         }
 
-     });
 
- };
 
 
  |