Last active
August 29, 2015 14:26
-
-
Save wenketel/f0eac1266125c2e4bb64 to your computer and use it in GitHub Desktop.
百度相册收藏图片的js文件和小书签,修改为长宽300以上的图片才能收藏
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (function() { | |
| var a = {}; | |
| var c = { | |
| handlers: { | |
| _guid: 0, | |
| getGuid: function() { | |
| return++this._guid | |
| } | |
| }, | |
| find: function(e, f) { | |
| var h = "querySelectorAll", | |
| g; | |
| f = f || document; | |
| if (!f.querySelectorAll) { | |
| h = "getElementById"; | |
| if (e.indexOf("#") == -1) { | |
| h = "getElementsByTagName" | |
| } else { | |
| e = e.substr(1) | |
| } | |
| } | |
| if (!f[h]) { | |
| f = document | |
| } | |
| g = f[h](e); | |
| return g.nodeType && !g.length ? [g] : g | |
| }, | |
| event: { | |
| add: function(i, h, e, f, g) { | |
| if (document.addEventListener) {} else { | |
| h = "on" + h | |
| } | |
| this._handle(i, h, e, !!f, g, "add") | |
| }, | |
| remove: function(i, h, e, f, g) { | |
| if (document.addEventListener) {} else { | |
| h = "on" + h | |
| } | |
| this._handle(i, h, e, !!f, g, "remove") | |
| }, | |
| _handle: function(l, k, f, h, j, g) { | |
| var i = { | |
| add: function(r, q, e, o) { | |
| var n = c.handlers; | |
| var p; | |
| if (r.addEventListener) { | |
| r.addEventListener(q, e, o) | |
| } else { | |
| if (q == "onload") { | |
| r.attachEvent("onload", e) | |
| } else { | |
| if (! (p = r.getAttribute("data-guid-pic-ext"))) { | |
| p = c.handlers.getGuid(); | |
| n[p] = {}; | |
| r.setAttribute("data-guid-pic-ext", p) | |
| } | |
| n = n[p]; | |
| if (!n[q]) { | |
| n[q] = []; | |
| r[q] = function() { | |
| var t, s; | |
| try { | |
| for (t = 0, s = n[q].length; t < s; t++) { | |
| n[q][t].call(this, window.event) | |
| } | |
| } catch(u) {} | |
| } | |
| } | |
| n[q].push(e); | |
| r = null | |
| } | |
| } | |
| }, | |
| remove: function(v, r, t, u) { | |
| var n = c.handlers; | |
| var s; | |
| if (v.removeEventListener) { | |
| v.removeEventListener(r, t, u) | |
| } else { | |
| if (r == "onload") { | |
| v.detachEvent("onload", t) | |
| } else { | |
| s = v.getAttribute("data-guid-pic-ext"); | |
| n = n[s]; | |
| for (var o = 0, | |
| p = n[r].length; o < p; o++) { | |
| if (n[r][o] == t) { | |
| n[r].splice(o, 1) | |
| } | |
| } | |
| if (!n.length) { | |
| try { | |
| delete c.handlers[s][r]; | |
| delete v[r]; | |
| v[r] = null | |
| } catch(q) { | |
| c.handlers[s][r] = null; | |
| v[r] = null | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }; | |
| if (typeof l == "string") { | |
| l = c.find(l, j); | |
| if (l.length > 0) { | |
| c.forEach(l, | |
| function(e) { | |
| i[g](e, k, f, h) | |
| }) | |
| } | |
| } else { | |
| try { | |
| i[g](l, k, f, h) | |
| } catch(m) {} | |
| } | |
| }, | |
| preventDefault: function(f) { | |
| if (f.preventDefault) { | |
| f.preventDefault() | |
| } else { | |
| f.returnValue = false | |
| } | |
| }, | |
| target: function(f) { | |
| return f.target || f.srcElement | |
| }, | |
| getRelatedTarget: function(f) { | |
| if (f.relatedTarget) { | |
| return f.relatedTarget | |
| } else { | |
| if (f.toElement) { | |
| return f.toElement | |
| } else { | |
| if (f.fromElement) { | |
| return f.fromElement | |
| } else { | |
| return null | |
| } | |
| } | |
| } | |
| }, | |
| stop: function(e) { | |
| if (!e) { | |
| return false | |
| } | |
| if (e.preventDefault) { | |
| e.preventDefault(); | |
| e.stopPropagation() | |
| } else { | |
| e.returnValue = false; | |
| e.cancelBubble = false | |
| } | |
| } | |
| }, | |
| dimension: { | |
| minSize: 300, | |
| defaultMinSize: 300, | |
| validCls: "pic-valid-selected-img", | |
| originalImg: new Image(), | |
| verify: function(e) { | |
| if (e.src) { | |
| this.originalImg.src = e.src; | |
| if (e.className.indexOf(this.validCls) > -1) { | |
| return true | |
| } else { | |
| if (this.originalImg.width >= this.minSize && this.originalImg.height >= this.minSize) { | |
| e.className += " " + this.validCls; | |
| return true | |
| } else { | |
| return false | |
| } | |
| } | |
| } | |
| }, | |
| setMinSize: function(e) { | |
| if (typeof e == "number" && e > this.defaultMinSize && this.minSize != e) { | |
| this.minSize = e | |
| } | |
| return this | |
| } | |
| }, | |
| format: function(f, e) { | |
| return f.replace(/#\{(.+?)\}/g, | |
| function(g, i) { | |
| var h = e[i]; | |
| return ("undefined" == typeof h ? "": h) | |
| }); | |
| return f | |
| }, | |
| getView: function() { | |
| var f = document, | |
| e = f.compatMode == "BackCompat" ? f.body: f.documentElement; | |
| return { | |
| w: e.clientWidth, | |
| h: e.clientHeight, | |
| st: window.pageYOffset || f.documentElement.scrollTop || f.body.scrollTop, | |
| sl: window.pageXOffset || f.documentElement.scrollLeft || f.body.scrollLeft | |
| } | |
| }, | |
| getPosition: function(l) { | |
| var m = 0, | |
| v = 0; | |
| if (l.getBoundingClientRect) { | |
| var u = window, | |
| t = document.body, | |
| s = document.documentElement, | |
| r = l.getBoundingClientRect(), | |
| q = s.clientTop || t.clientTop || 0, | |
| p = s.clientLeft || t.clientLeft || 0, | |
| o = u.pageYOffset || t.scrollTop || s.scrollTop, | |
| n = u.pageXOffset || t.scrollLeft || s.scrollLeft; | |
| m = r.left + n - p, | |
| v = r.top + o - q | |
| } | |
| return { | |
| left: m, | |
| top: v, | |
| width: l.width, | |
| height: l.height | |
| } | |
| }, | |
| keys: (function() { | |
| var g = Object.prototype.hasOwnProperty, | |
| h = !({ | |
| toString: null | |
| }).propertyIsEnumerable("toString"), | |
| f = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"], | |
| e = f.length; | |
| return function(l) { | |
| if (typeof l !== "object" && typeof l !== "function" || l === null) { | |
| throw new TypeError("Object.keys called on non-object") | |
| } | |
| var j = []; | |
| for (var m in l) { | |
| if (g.call(l, m)) { | |
| j.push(m) | |
| } | |
| } | |
| if (h) { | |
| for (var k = 0; k < e; k++) { | |
| if (g.call(l, f[k])) { | |
| j.push(f[k]) | |
| } | |
| } | |
| } | |
| return j | |
| } | |
| })(), | |
| forEach: function(o, p) { | |
| var f, g; | |
| if (this == null) { | |
| throw new TypeError("this is null or not defined") | |
| } | |
| var l = o, | |
| j; | |
| var m = l.length >>> 0; | |
| if (o.forEach) { | |
| o.forEach(p); | |
| return | |
| } else { | |
| if (Object.prototype.toString(o) !== "[object Array]") { | |
| try { | |
| l = Array.prototype.slice.call(o) | |
| } catch(n) { | |
| o = []; | |
| for (j = 0; j < m; j++) { | |
| o.push(l[j]) | |
| } | |
| l = o | |
| } | |
| } | |
| } | |
| if ({}.toString.call(p) !== "[object Function]") { | |
| throw new TypeError(p + " is not a function") | |
| } | |
| if (o) { | |
| f = o | |
| } | |
| g = 0; | |
| while (g < m) { | |
| var h; | |
| if (Object.prototype.hasOwnProperty.call(l, g)) { | |
| h = l[g]; | |
| p.call(f, h, g, l) | |
| } | |
| g++ | |
| } | |
| }, | |
| mixin: function(f, e) { | |
| function g(i, h) { | |
| if (!f[i]) { | |
| f[i] = e[i] | |
| } | |
| } | |
| c.forEach(c.keys(e), | |
| function(i, h) { | |
| g(i, h) | |
| }) | |
| }, | |
| indexOf: function(i, g) { | |
| if (this == null) { | |
| throw new TypeError() | |
| } | |
| var h = i; | |
| var e = h.length >>> 0; | |
| if (e === 0) { | |
| return - 1 | |
| } | |
| var j = 0; | |
| if (arguments.length > 1) { | |
| j = Number(arguments[2]); | |
| if (j != j) { | |
| j = 0 | |
| } else { | |
| if (j != 0 && j != Infinity && j != -Infinity) { | |
| j = (j > 0 || -1) * Math.floor(Math.abs(j)) | |
| } | |
| } | |
| } | |
| if (j >= e) { | |
| return - 1 | |
| } | |
| var f = j >= 0 ? j: Math.max(e - Math.abs(j), 0); | |
| for (; f < e; f++) { | |
| if (f in h && h[f] === g) { | |
| return f | |
| } | |
| } | |
| return - 1 | |
| } | |
| }; | |
| var b = { | |
| _listeners: {}, | |
| addEventListener: function(e, f) { | |
| if (typeof f != "function") { | |
| return this | |
| } | |
| if (!this._listeners[e]) { | |
| this._listeners[e] = [] | |
| } | |
| this._listeners[e].push(f); | |
| return this | |
| }, | |
| removeEventListener: function(g, h) { | |
| var f = this._listeners[g], | |
| e; | |
| if (!f) { | |
| return this | |
| } | |
| e = c.indexOf(f, h); | |
| if (e > -1) { | |
| f.splice(e, 1) | |
| } | |
| return this | |
| }, | |
| dispatchEvent: function(h) { | |
| var i = this, | |
| f = Array.prototype.slice.call(arguments, 1), | |
| g = this._listeners[h], | |
| e; | |
| if (!g) { | |
| return this | |
| } | |
| function e(j) { | |
| j.apply(i, f) | |
| } | |
| c.forEach(g, e); | |
| return this | |
| } | |
| }; (function(e, g) { | |
| var f = { | |
| isInit: false, | |
| fragment: null, | |
| hideBtnTimer: null, | |
| bodyListenerFlag: false, | |
| currentURL: "", | |
| createView: function() { | |
| var h = document.createElement("div"); | |
| h.id = "pic_ext_float"; | |
| h.innerHTML = '<div id="pic_ext_float_btn"><a href="#" class="pic_ext_float_btn_a" onclick="return false;"><span id="pic_ext_float_btn_t">收藏到百度相册</span></a></div>'; | |
| document.body.appendChild(h); | |
| this.fragment = h; | |
| this.bindEvent() | |
| }, | |
| bindEvent: function() { | |
| var h = this; | |
| g.event.add(this.fragment, "mouseover", | |
| function(i) { | |
| var j = this; | |
| g.event.remove(document.body, "mouseover", h.bodyListenerHandler); | |
| h.bodyListenerFlag = false; | |
| if (h.hideBtnTimer) { | |
| clearTimeout(h.hideBtnTimer) | |
| } | |
| j.style.display = "block" | |
| }); | |
| g.event.add(this.fragment, "mouseout", | |
| function(i) { | |
| h.hideFloatBtn(); | |
| if (h.bodyListenerFlag == false) { | |
| g.event.add(document.body, "mouseover", h.bodyListenerHandler); | |
| h.bodyListenerFlag = true | |
| } | |
| }); | |
| g.event.add(this.fragment, "click", | |
| function(i) { | |
| h.dispatchEvent("clicked", { | |
| currentURL: h.currentURL | |
| }); | |
| g.event.preventDefault(i) | |
| }) | |
| }, | |
| bodyListenerHandler: function(k) { | |
| var j = g.event.target(k), | |
| m = j.nodeName.toUpperCase(), | |
| i = j.className, | |
| l, | |
| h; | |
| if (m == "IMG") { | |
| if (g.dimension.verify(j)) { | |
| l = g.getPosition(j); | |
| if (f.hideBtnTimer) { | |
| clearTimeout(f.hideBtnTimer) | |
| } | |
| f.fragment.style.display = "block"; | |
| f.fragment.style.left = l.left + l.width - 127 + "px"; | |
| f.fragment.style.top = l.top - 29 + "px"; | |
| f.currentURL = j.src; | |
| if (!document.body.lastElementChild || document.body.lastElementChild != f.fragment) { | |
| document.body.appendChild(f.fragment) | |
| } | |
| } | |
| } else { | |
| f.hideFloatBtn() | |
| } | |
| }, | |
| hideFloatBtnAction: function() { | |
| f.fragment.style.display = "none" | |
| }, | |
| hideFloatBtn: function() { | |
| if (f.hideBtnTimer) { | |
| clearTimeout(f.hideBtnTimer) | |
| } | |
| f.hideBtnTimer = setTimeout(this.hideFloatBtnAction, 500) | |
| }, | |
| init: function() { | |
| f.createView(); | |
| this.isInit = true | |
| }, | |
| enable: function() { | |
| if (!this.isInit) { | |
| this.init() | |
| } | |
| g.event.add(document.body, "mouseover", this.bodyListenerHandler); | |
| this.bodyListenerFlag = true; | |
| return this | |
| }, | |
| disable: function() { | |
| if (this.hideBtnTimer) { | |
| clearTimeout(this.hideBtnTimer); | |
| this.hideFloatBtnAction() | |
| } | |
| if (!this.bodyListenerFlag) { | |
| return this | |
| } | |
| g.event.remove(document.body, "mouseover", this.bodyListenerHandler); | |
| this.bodyListenerFlag = false | |
| } | |
| }; | |
| e.floatBtn = f; | |
| g.mixin(f, b) | |
| })(a, c); (function(f, g) { | |
| var e = { | |
| remainImgSources: null, | |
| baseUrl: "http://xiangce.baidu.com/bookmark", | |
| fragment: null, | |
| visible: true, | |
| dataToBeSent: null, | |
| state: 0, | |
| windowName: null, | |
| sendData: function(h) { | |
| this.dataToBeSent = this.buildData(h); | |
| this.createIframe() | |
| }, | |
| buildData: function(j) { | |
| var k, l, h = { | |
| tpl: "v3", | |
| name: document.title || "", | |
| surl: location.href, | |
| srcs: [] | |
| }; | |
| for (k = 0; l = j[k]; k++) { | |
| h.srcs.push(l) | |
| } | |
| return h | |
| }, | |
| generateUrl: function() { | |
| var h = this.baseUrl + (this.baseUrl.indexOf("?") == -1 ? "?": ""), | |
| l = ["tpl", "name", "surl"], | |
| k, | |
| j = 0; | |
| for (; k = l[j]; j++) { | |
| if (j) { | |
| h += "&" | |
| } | |
| h += k + "=" + encodeURIComponent(this.dataToBeSent[k]) | |
| } | |
| return h | |
| }, | |
| createIframe: function() { | |
| var h = document.createElement("div"), | |
| j = this.generateUrl(); | |
| h.style.width = "650px"; | |
| h.style.height = "350px"; | |
| h.id = "pic_ext_faviframe_con"; | |
| h.innerHTML = '<iframe id="pic_ext_faviframe" src="' + j + '" frameBorder="0" scrolling="no" border="0" width="200px" height="200px""></iframe>'; | |
| this.fragment = h; | |
| this.dispatchEvent("sendDataStart"); | |
| var i = g.find("#pic_ext_faviframe", h)[0]; | |
| if (!window.postMessage) { | |
| i.contentWindow.name = e.formatData("imagedata", e.dataToBeSent.srcs); | |
| this.state = 0; | |
| this.windowName = window.name; | |
| g.event.add(i, "load", this.oldBrowserCloseWindowListener, false) | |
| } | |
| g.event.add(i, "load", this.frameOnload, false) | |
| }, | |
| frameOnload: function(h) { | |
| var k = g.event.target(h), | |
| j = e.formatData("imagedata", e.dataToBeSent.srcs), | |
| i = j; | |
| if (k.contentWindow.postMessage) { | |
| k.contentWindow.postMessage(j, "*"); | |
| e.dataToBeSent = null | |
| } | |
| e.dispatchEvent("sendDataReady"); | |
| g.event.remove(k, "load", e.frameOnload) | |
| }, | |
| oldBrowserCloseWindowListener: function(h) { | |
| var i; | |
| if (window.name == "closeWindow") { | |
| i = g.event.target(h); | |
| g.event.remove(i, "load", e.oldBrowserCloseWindowListener); | |
| e.state = 0; | |
| e.dispatchEvent("closeWindow") | |
| } | |
| e.state++ | |
| }, | |
| formatData: function(h, i) { | |
| var k = []; | |
| for (var j in i) { | |
| if (i.hasOwnProperty(j)) { | |
| if (/[\"\']/.test(i[j])) { | |
| k.push(i[j]) | |
| } else { | |
| k.push('"' + i[j] + '"') | |
| } | |
| } | |
| } | |
| return '{"type": "' + h + '","srcs": [' + k + "]}" | |
| }, | |
| appendTo: function(h) { | |
| if (!h.appendChild) { | |
| return | |
| } | |
| h.appendChild(this.fragment) | |
| }, | |
| clean: function() { | |
| if (!this.fragment) { | |
| return | |
| } | |
| if (window.name) { | |
| window.name = this.windowName; | |
| this.windowName = "" | |
| } | |
| this.onloadFlag = 0; | |
| this.remainImgSources = null; | |
| this.fragment.parentNode.removeChild(this.fragment); | |
| this.fragment = null; | |
| this.visible = true | |
| }, | |
| show: function() { | |
| this._setVisible(true) | |
| }, | |
| hide: function() { | |
| this._setVisible(false) | |
| }, | |
| _setVisible: function(h) { | |
| if (this.visible != h) { | |
| this.visible = h; | |
| this.fragment.className = h ? "": "hide" | |
| } | |
| } | |
| }; | |
| f.sendController = e; | |
| g.mixin(e, b) | |
| })(a, c); (function(f, g) { | |
| var e = { | |
| overlayEl: null, | |
| contentHolder: null, | |
| isInit: false, | |
| createOverLay: function() { | |
| var i = document.createElement("div"); | |
| i.id = "pic_ext_overlay"; | |
| var h = document.createElement("div"); | |
| h.id = "pic_ext_favWindow"; | |
| h.innerHTML = "<span id='pic_ext_frameloading'>正在加载....</span><a href='#' id='close_fav_window'></a>"; | |
| document.body.appendChild(i); | |
| document.body.appendChild(h); | |
| this.overlayEl = i; | |
| this.contentHolder = h; | |
| g.event.add("#close_fav_window", "click", this.closeFavWindow, false); | |
| this.isInit = true | |
| }, | |
| closeFavWindow: function(h) { | |
| g.event.preventDefault(h); | |
| e.hide(); | |
| return false | |
| }, | |
| show: function(h) { | |
| if (!this.isInit) { | |
| this.createOverLay() | |
| } | |
| this.overlayEl.style.display = "block"; | |
| this.contentHolder.style.display = h ? "none": "block"; | |
| this.dispatchEvent("showOverlay") | |
| }, | |
| hide: function() { | |
| this.overlayEl.style.display = "none"; | |
| this.contentHolder.style.display = "none"; | |
| e.dispatchEvent("closeOverlay") | |
| }, | |
| hideLoading: function() { | |
| this.contentHolder.className = "" | |
| }, | |
| showLoading: function() { | |
| this.contentHolder.className = "loading" | |
| } | |
| }; | |
| f.overlay = e; | |
| g.mixin(e, b) | |
| })(a, c); (function(f, g) { | |
| var e = { | |
| view: null, | |
| isInit: false, | |
| minSize: 300, | |
| images: null, | |
| selectedNum: 0, | |
| selItems: [], | |
| createContent: function() { | |
| var o = '<div id="pic_ext_controll_inner"><ul id="pic_ext_list">'; | |
| var l = []; | |
| var p = ['<li style="#{marLeft}" data-index="#{index}" data-select="0">', '<img class="pic_ext_tile_img" style="top:#{top}px;left:#{left}px;" src="#{src}" width="#{rw}" height="#{rh}" />', '<p class="pic_ext_tile_size_wrap"><span class="pic_ext_tile_size">#{w}x#{h}</span></p>', '<div class="pic_ext_tile_super">', '<div class="pic_ext_img-lay"></div>', '<div class="pic_ext_select_logo"></div>', '<a onclick="return false" class="pic_ext_img_select" href=""></a>', '<a onclick="return false" class="pic_ext_img_cancle" href=""></a>', "</div>", "</li>"].join(""); | |
| var k = ['</ul><p id="less_than12">温馨提示:您目前设置的是最小尺寸是', this.minSize, '以上的图片哦 ^_^</p><div style="clear:both;"></div></div>'].join(""); | |
| for (var m = 0, | |
| j = this.images, | |
| h = j.length; m < h; m++) { | |
| if (m % 4 == 0) { | |
| j[m]["marLeft"] = "margin-left:0" | |
| } | |
| j[m].index = m; | |
| l.push(g.format(p, j[m])) | |
| } | |
| var n = document.createElement("div"); | |
| n.id = "pic_ext_controll"; | |
| n.innerHTML = o + l.join("") + k; | |
| document.body.appendChild(n); | |
| this.view = n; | |
| g.find("#less_than12")[0].style.display = j.length <= 12 ? "block": "none"; | |
| g.event.add("li", "click", this.clickHandler, false, this.view); | |
| g.event.add("li", "mouseover", this.mouseoverHandler, false, this.view); | |
| g.event.add("li", "mouseout", this.mouseoutHandler, false, this.view); | |
| document.body.scrollTop = 0; | |
| this.isInit = true; | |
| this.dispatchEvent("contentShow", { | |
| imgNum: j.length | |
| }) | |
| }, | |
| getImages: function() { | |
| var q = []; | |
| function j(s) { | |
| var u = {}; | |
| var i = s.src; | |
| var y = s.width; | |
| var t = s.height; | |
| var o, x, v, r; | |
| if (y / t > 1) { | |
| x = 198; | |
| o = (x * y) / t | |
| } else { | |
| if (y / t == 1) { | |
| x = 198; | |
| o = 198 | |
| } else { | |
| o = 198; | |
| x = (o * t) / y | |
| } | |
| } | |
| v = 99 - (x / 2) || 0; | |
| r = 99 - (o / 2) || 0; | |
| return { | |
| w: s.width, | |
| h: s.height, | |
| src: i, | |
| alt: s.alt || "", | |
| orig: s, | |
| rw: o, | |
| rh: x, | |
| top: v, | |
| left: r | |
| } | |
| } | |
| function n(v) { | |
| var s = v.images, | |
| u = {}; | |
| for (var r = 0, | |
| w, t; w = s[r++];) { | |
| if (w.style.display != "none") { | |
| if (w.complete) { | |
| u = new Image(); | |
| u.src = w.src; | |
| t = j(u); | |
| if (g.dimension.verify(w)) { | |
| if (t.src) { | |
| w.setAttribute("dataxc-width", t.w); | |
| w.setAttribute("dataxc-height", t.h); | |
| q.push(t) | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| n(document); | |
| var m = document.getElementsByTagName("iframe"); | |
| for (var h = 0, | |
| p; p = m[h++];) { | |
| try { | |
| var l = p.contentDocument; | |
| l && n(l) | |
| } catch(k) {} | |
| } | |
| this.images = q | |
| }, | |
| clickHandler: function(h) { | |
| e.previewSelect(this) | |
| }, | |
| mouseoverHandler: function(i) { | |
| var h = i.relatedTarget; | |
| if (!h || (!(h.compareDocumentPosition(this) & 8) && h !== this)) { | |
| e.enter.call(this, i) | |
| } | |
| }, | |
| mouseoutHandler: function(i) { | |
| var h = i.relatedTarget; | |
| if (!h || (!(h.compareDocumentPosition(this) & 8) && h !== this)) { | |
| e.leave.call(this, i) | |
| } | |
| }, | |
| show: function() { | |
| if (!this.isInit) { | |
| this.getImages(); | |
| this.createContent() | |
| } | |
| }, | |
| enter: function(j) { | |
| var i = this.getAttribute("data-select"); | |
| var h = this.getElementsByTagName("a"); | |
| if (i == 1) { | |
| h[0].style.display = "none"; | |
| h[1].style.display = "inline-block" | |
| } else { | |
| h[0].style.display = "inline-block"; | |
| h[1].style.display = "none"; | |
| this.getElementsByTagName("div")[1].style.display = "block" | |
| } | |
| }, | |
| leave: function(j) { | |
| var i = this.getAttribute("data-select"); | |
| var h = this.getElementsByTagName("a"); | |
| h[0].style.display = "none"; | |
| h[1].style.display = "none"; | |
| if (i != "1") { | |
| this.getElementsByTagName("div")[1].style.display = "none" | |
| } | |
| }, | |
| hide: function() { | |
| if (this.view) { | |
| g.event.remove("li", "click", this.clickHandler, false, this.view); | |
| g.event.remove("li", "mouseover", this.mouseoverHandler, false, this.view); | |
| g.event.remove("li", "mouseout", this.mouseoutHandler, false, this.view); | |
| this.view.parentNode.removeChild(this.view); | |
| this.images = null; | |
| this.isInit = false; | |
| this.selItems = []; | |
| this.selectedNum = 0 | |
| } | |
| }, | |
| setMinSize: function(h) { | |
| if (typeof h == "number" && h > 100 && h != this.minSize) { | |
| this.minSize = h | |
| } | |
| }, | |
| previewSelect: function(o, m) { | |
| var h = o.getAttribute("data-select"); | |
| var j = 500; | |
| var q; | |
| var r; | |
| q = o.getAttribute("data-index"); | |
| if (m == "all" || (!m && h == "0")) { | |
| if (this.selItems.length >= j) { | |
| alert("最多只能选" + j + "张图片哦~"); | |
| return false | |
| } | |
| o.setAttribute("data-select", "1"); | |
| r = o.getElementsByTagName("div"); | |
| for (var p = 0, | |
| k = r.length; p < k; p++) { | |
| if (r[p].className && (r[p].className == "pic_ext_img-lay" || r[p].className == "pic_ext_select_logo")) { | |
| r[p].style.display = "block" | |
| } | |
| } | |
| o.style.borderColor = "#1aa8f5"; | |
| if (!m) { | |
| this.selItems.push(q); | |
| this.updateSelItem("add") | |
| } | |
| } else { | |
| r = o.getElementsByTagName("div"); | |
| for (var p = 0, | |
| k = r.length; p < k; p++) { | |
| if (r[p].className && (r[p].className == "pic_ext_img-lay" || r[p].className == "pic_ext_select_logo")) { | |
| r[p].style.display = "none" | |
| } | |
| } | |
| o.setAttribute("data-select", "0"); | |
| o.style.borderColor = "#fff"; | |
| if (!m) { | |
| if ((p = c.indexOf(this.selItems, q)) > -1) { | |
| this.selItems.splice(p, 1); | |
| this.updateSelItem("remove") | |
| } | |
| } | |
| } | |
| var n = o.getElementsByTagName("a"); | |
| n[0].style.display = "none"; | |
| n[1].style.display = "none" | |
| }, | |
| previewSelectAll: function() { | |
| g.forEach(g.find("li", this.view), | |
| function(h) { | |
| e.previewSelect(h, "all") | |
| }); | |
| this.selItems = c.keys(this.images); | |
| this.updateSelItem("all") | |
| }, | |
| previewSelectNone: function() { | |
| c.forEach(g.find("li", this.view), | |
| function(h) { | |
| e.previewSelect(h, "none") | |
| }); | |
| this.selItems = []; | |
| this.updateSelItem("none") | |
| }, | |
| updateSelItem: function(h) { | |
| switch (h) { | |
| case "remove": | |
| this.selectedNum--; | |
| break; | |
| case "add": | |
| this.selectedNum++; | |
| break; | |
| case "all": | |
| this.selectedNum = this.images.length; | |
| break; | |
| case "none": | |
| this.selectedNum = 0; | |
| break | |
| } | |
| this.dispatchEvent("updateSelItem", { | |
| selectedNum: this.selectedNum, | |
| totalNum: this.images.length | |
| }) | |
| }, | |
| getSelImagesSource: function() { | |
| var h = []; | |
| c.forEach(this.selItems, | |
| function(i) { | |
| h.push(e.images[i].src) | |
| }); | |
| return h | |
| } | |
| }; | |
| f.contentCtrl = e; | |
| g.mixin(e, b) | |
| })(a, c); (function(e, f) { | |
| var g = { | |
| isInit: false, | |
| fragment: null, | |
| selectedItem: 0, | |
| isSelectAll: false, | |
| createTopBar: function() { | |
| var h = ['<div id="pic_ext_bar_inner">', '<img id="pic_ext_logo" src="http://xiangce.baidu.com/static/images/bdXC-logo.png">', '<a id="pic_ext_fav_button" href="#" ></a>', '<span id="pic_ext_fav_tips">已选择<span id="pic_ext_fav_num_current">0</span>张图片 <input id="pic_ext_selectAll" type="checkbox" /> 全选</span>', '<a id="pic_ext_close" href="#"></a>', "</div>"]; | |
| var i = document.createElement("div"); | |
| i.id = "pic_ext_bar"; | |
| i.innerHTML = h.join(""); | |
| document.body.appendChild(i); | |
| f.event.add("#pic_ext_selectAll", "click", | |
| function(k) { | |
| var j = f.event.target(k); | |
| g.selectAll(j.checked) | |
| }, | |
| false); | |
| f.event.add("#pic_ext_fav_button", "click", this.submitBtnHandler, false); | |
| f.event.add("#pic_ext_close", "click", this.cancelBtnHandler, false); | |
| this.fragment = i; | |
| this.isInit = true | |
| }, | |
| selectAll: function(i, h) { | |
| if (!h) { | |
| this.dispatchEvent("selectAll", { | |
| select: i | |
| }) | |
| } else { | |
| f.find("#pic_ext_selectAll")[0].checked = i | |
| } | |
| this.isSelectAll = i | |
| }, | |
| show: function() { | |
| if (!this.isInit) { | |
| this.createTopBar() | |
| } | |
| this.fragment.style.display = "block" | |
| }, | |
| hide: function() { | |
| if (this.isInit) { | |
| this.updateSelectedItem(0); | |
| this.selectAll(false, true); | |
| this.fragment.style.display = "none" | |
| } | |
| }, | |
| submitBtnHandler: function(h) { | |
| f.event.preventDefault(h); | |
| if (g.selectedItem) { | |
| g.dispatchEvent("submitItem") | |
| } | |
| }, | |
| cancelBtnHandler: function(h) { | |
| f.event.preventDefault(h); | |
| g.dispatchEvent("topBarClose") | |
| }, | |
| updateSelectedItem: function(j, i) { | |
| var h = f.find("#pic_ext_fav_button", this.fragment)[0]; | |
| if (j > 0 && this.selectedItem == 0) { | |
| h.className = "pic_ext_fav_button_select" | |
| } else { | |
| if (j <= 0 && this.selectedItem > 0) { | |
| h.className = "" | |
| } | |
| } | |
| f.find("#pic_ext_fav_num_current")[0].innerHTML = encodeURIComponent(j); | |
| this.selectedItem = j; | |
| if (j != i && this.isSelectAll) { | |
| this.selectAll(false, true) | |
| } else { | |
| if (j == i && !this.isSelectAll) { | |
| this.selectAll(true, true) | |
| } | |
| } | |
| } | |
| }; | |
| e.topBar = g; | |
| f.mixin(g, b) | |
| })(a, c); | |
| var d = { | |
| disableMsg: { | |
| 1 : "你在自己的相册,不能收藏自己的图片哦!" | |
| }, | |
| active: false, | |
| collectable: true, | |
| overlayShow: false, | |
| isInit: false, | |
| disable: 0, | |
| isFloatBtnEnable: false, | |
| restrictSites: ["tieba.baidu.com", "image.baidu.com"], | |
| xiangceHost: "http://xiangce.baidu.com", | |
| hostname: "xiangce.baidu.com", | |
| styleSheet: { | |
| bdXC_style_text: "#pic_ext_overlay{background-color: #000; opacity: 0.7; width:100%;height:100%;filter: alpha(opacity=70);position:fixed;left:0;z-index:2147483645;top:0;_position:absolute !important;_bottom:auto !important;_top:expression(eval(document.documentElement.scrollTop))!important;} body{_background-image:url(about:blank);_background-attachment:fixed;_height:100%!important;} #pic_ext_logo{display:'';} #pic_ext_bar{height:50px;background-color:#f8f9f8;opacity:1;z-index:2147483647;position:fixed;left:0;top:0;width:100%;margin:0;padding:0;text-align:center;_position:absolute !important;_bottom:auto !important;_top:expression(eval(document.documentElement.scrollTop))!important;} #pic_ext_fav_button{display:inline-block;width:143px;height:30px;position:absolute;left:612px;top:12px;background:url(http://xiangce.baidu.com/static/images/bdXC_fav_button_cancle.png) 0 0 no-repeat;cursor:default;} .pic_ext_fav_button_select{background-position:0 -39px!important;cursor:pointer !important;} .pic_ext_fav_button_select:hover{background-position:0 -80px!important;} #pic_ext_bar_inner{width:830px;padding-top:10px;position:relative;margin-left:auto;margin-right:auto;text-align:left;} #pic_ext_close{display:inline-block;height:30px;width:67px;position:absolute;right:0;top:12px;background:url(http://xiangce.baidu.com/static/images/bdXC_fav_button_cancle.png) -153px -39px no-repeat;} #pic_ext_close:hover{background-position:-153px -80px;} #pic_ext_fav_tips{font-size:12px;color:#999;position:absolute;top:19px;right: 235px;} #less_than12{clear:both;text-align:center;color:#fff;padding-top:100px;font-size:14px;display:none;} #pic_ext_fav_num_current,#pic_ext_fav_num_total{color:#ff6600;font-family: arial;font-weight: bold;} #pic_ext_selectAll{vertical-align: middle;margin:0;margin-top:-1px;} #pic_ext_controll{text-algin:center;position:absolute;width:100%;left:0;top:50px;z-index:2147483646;} #pic_ext_controll_inner{text-align:left;width:830px;margin-left:auto;margin-right:auto;} #pic_ext_controll_inner ul{margin:0;padding:0;} #pic_ext_controll_inner li{_display:inline;text-align: center;overflow:hidden;background-color:#fff;list-style:none;margin:0;padding:0;width:198px;height:198px;border:1px solid #fff;float:left;margin-top:10px;margin-left:10px;position:relative;cursor:pointer;} .pic_ext_tile_img{position:absolute;}#pic_ext_controll_inner li.pic_ext_selected{border-color:#1aa8f5;} #pic_ext_controll_inner li.pic_ext_tile_over .pic_ext_img-lay{display:block;} .pic_ext_tile_over .pic_ext_img_select{display:inline-block;} .pic_ext_img-lay{position:absolute;width:198px;height:198px;background-color:#000;opacity:0.60;filter: alpha(opacity=60);left:0px;top:0px;display:none;} .pic_ext_img_select,.pic_ext_img_cancle{display:none;width:75px;height:33px;position:absolute;left:65px;top:85px;background:url(http://xiangce.baidu.com/static/images/bdXC_operate_btn.png) no-repeat -81px 0;cursor:pointer;} .pic_ext_img_select:hover{background:url(http://xiangce.baidu.com/static/images/bdXC_operate_btn.png) no-repeat -81px -37px;} .pic_ext_img_cancle{display:none;background:url(http://xiangce.baidu.com/static/images/bdXC_operate_btn.png) no-repeat 0 0;} .pic_ext_img_cancle:hover{background:url(http://xiangce.baidu.com/static/images/bdXC_operate_btn.png) no-repeat 0 -37px;} .pic_ext_tile_size_wrap{position:absolute;top:170px;left:0;text-align: center;margin:0;padding:0;width:198px;} .pic_ext_tile_size{display:inline-block;background-color:#333;padding:2px 4px 2px 4px;font-size:12px;color:#fff;font-family: arial;} .pic_ext_select_logo{position:absolute;top:75px;left:70px;width:70px;height:48px;display:none;background:url(http://xiangce.baidu.com/static/images/bdXC_select_logo.png) no-repeat;_background: none;_filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='http://xiangce.baidu.com/static/images/bdXC_select_logo.png',sizingMethod='crop');} #pic_ext_float_btn{width:123px;padding-left:5px;background: url(http://xiangce.baidu.com/static/images/xiangce_ext_floatbtn_bg.png) no-repeat;} .pic_ext_float_btn_a{background-color:transparent;display: inline-block;cursor: pointer;color: #666;text-decoration: none;} #pic_ext_float_btn_t{display:inline-block; line-height:16px; padding:8px 0 8px 30px;font:12px '宋体' !important;color:#fff;} #pic_ext_float_btn:hover{text-decoration:none; background-image: url(http://xiangce.baidu.com/static/images/xiangce_ext_floatbtn_bg_hover.png);} #pic_ext_float_btn:hover .pic_ext_float_btn_l{background-position:-28px 4px;} #pic_ext_float{display:none;position: absolute;left: 0;top:0;z-index:2147483644;cursor: pointer;} #pic_ext_favWindow{display:none;position:fixed;_position:absolute;width:650px;height:350px;z-index:2147483646;background-color:#fff;left: 50%;top: 50%;margin-left: -325px;margin-top: -175px;} #close_fav_window{width:11px;height:11px;_font-size:0;position:absolute;background:url(http://xiangce.baidu.com/static/images/bdXC_closeWindow.png);position:absolute;left:620px;top:15px;} #frameloading{position:absolute;top:150px;left:280px;color:#666;} #pic_ext_faviframe{width:650px;height:350px;border:none;} .pic_ext_float_btn_a,.pic_ext_float_btn_a:visited,.pic_ext_float_btn_a:hover,.pic_ext_float_btn_a:active{background-color:transparent;text-decoration: none;} #pic_ext_favWindow.loading #close_fav_window{display: none;}#pic_ext_frameloading {display: none;position:absolute;top:150px;left:280px;color:#666;}#pic_ext_favWindow.loading #pic_ext_frameloading{display: block;}", | |
| addStyle: function() { | |
| var e = document.createElement("style"); | |
| e.type = "text/css"; | |
| e.media = "screen"; | |
| e.styleSheet ? (e.styleSheet.cssText = this.bdXC_style_text) : e.appendChild(document.createTextNode(this.bdXC_style_text)); (document.getElementsByTagName("head")[0] || document.body).appendChild(e) | |
| } | |
| }, | |
| init: function() { | |
| var k, f, i, h, l, g; | |
| if (window.addEventListener) { | |
| l = "addEventListener" | |
| } else { | |
| if (window.attachEvent) { | |
| l = "attachEvent" | |
| } else { | |
| l = "blank_func_test"; | |
| window[l] = Function.prototype | |
| } | |
| } | |
| try { | |
| h = document.getElementsByTagName("head")[0] || document.getElementsByTagName("script")[0].parentNode | |
| } catch(j) { | |
| h = document.body | |
| } | |
| if (window.postMessage) { | |
| if (!window.JSON) {} | |
| g = l == "addEventListener" ? "message": "onmessage"; | |
| window[l](g, this.checkIsSelf, false); | |
| window[l](g, this.runByBookmarklet, false); | |
| window[l](g, this.closeWindowListner, false) | |
| } | |
| this.styleSheet.addStyle(); | |
| this.bindEvent(); | |
| if (c.indexOf(d.restrictSites, location.hostname) == -1) { | |
| a.floatBtn.enable(); | |
| d.isFloatBtnEnable = true | |
| } | |
| if (location.hostname == this.hostname) { | |
| if (window.pic && window.pic.owner && window.pic.owner.is_self && window.location.href.indexOf("/square") == -1 && window.location.href.indexOf("/feed/") == -1) { | |
| d.disable = 1; | |
| a.floatBtn.disable(); | |
| d.isFloatBtnEnable = false | |
| } | |
| } | |
| }, | |
| closeWindowListner: function(e) { | |
| if (e.origin == d.xiangceHost) { | |
| if (e.data == "closeWindow" || (e.data && e.data.type == "closeWindow")) { | |
| d.closeOverlay() | |
| } | |
| } | |
| }, | |
| checkIsSelf: function(f) { | |
| var g; | |
| try { | |
| g = JSON.parse(f.data) | |
| } catch(h) { | |
| g = f.data | |
| } | |
| if (g && g.type === "detect") { | |
| if (g.isSelf) { | |
| d.disable = 1; | |
| a.floatBtn.disable(); | |
| d.isFloatBtnEnable = false | |
| } | |
| if (window.removeEventListener) { | |
| window.removeEventListener("message", d.checkIsSelf) | |
| } else { | |
| if (window.detachEvent) { | |
| window.detachEvent("onmessage", d.checkIsSelf) | |
| } | |
| } | |
| } | |
| }, | |
| runByBookmarklet: function(f) { | |
| var g; | |
| try { | |
| g = JSON.parse(f.data) | |
| } catch(h) { | |
| g = f.data | |
| } | |
| if (g && g.type === "bookmarklet" && g.reInit) { | |
| d.showImagePicker() | |
| } | |
| }, | |
| overlayShowed: function() { | |
| d.overlayShow = true; | |
| if (d.isFloatBtnEnable) { | |
| a.floatBtn.disable() | |
| } | |
| }, | |
| overlayClosed: function() { | |
| a.sendController.clean(); | |
| d.overlayShow = false; | |
| if (d.isFloatBtnEnable) { | |
| a.floatBtn.enable() | |
| } | |
| }, | |
| closeOverlay: function() { | |
| a.overlay.hide() | |
| }, | |
| floatBtnClicked: function(e) { | |
| a.sendController.sendData([e.currentURL]) | |
| }, | |
| sendDataStart: function() { | |
| a.sendController.hide(); | |
| a.overlay.show(); | |
| a.overlay.showLoading(); | |
| a.sendController.appendTo(a.overlay.contentHolder) | |
| }, | |
| sendDataReady: function() { | |
| a.sendController.show(); | |
| a.overlay.hideLoading() | |
| }, | |
| showImagePicker: function() { | |
| if (!this.checkIsAvailable() || this.overlayShow) { | |
| return | |
| } | |
| a.overlay.show(true); | |
| a.topBar.show(); | |
| a.contentCtrl.show() | |
| }, | |
| checkIsAvailable: function() { | |
| if (this.disable) { | |
| alert(this.disableMsg[this.disable]); | |
| return false | |
| } | |
| return true | |
| }, | |
| closeImagePicker: function() { | |
| a.overlay.hide(); | |
| a.topBar.hide(); | |
| a.contentCtrl.hide() | |
| }, | |
| bindEvent: function() { | |
| a.floatBtn.addEventListener("clicked", this.floatBtnClicked); | |
| a.sendController.addEventListener("sendDataStart", this.sendDataStart); | |
| a.sendController.addEventListener("sendDataReady", this.sendDataReady); | |
| a.overlay.addEventListener("showOverlay", this.overlayShowed); | |
| a.overlay.addEventListener("closeOverlay", this.overlayClosed); | |
| a.topBar.addEventListener("selectAll", | |
| function(e) { | |
| if (e.select == true) { | |
| a.contentCtrl.previewSelectAll() | |
| } else { | |
| a.contentCtrl.previewSelectNone() | |
| } | |
| }); | |
| a.contentCtrl.addEventListener("updateSelItem", | |
| function(e) { | |
| a.topBar.updateSelectedItem(e.selectedNum, e.totalNum) | |
| }); | |
| a.contentCtrl.addEventListener("contentShow", | |
| function(e) { | |
| if (e.imgNum == 0) { | |
| d.closeImagePicker(); | |
| alert("没有合适的图片") | |
| } | |
| }); | |
| a.topBar.addEventListener("submitItem", | |
| function() { | |
| a.sendController.sendData(a.contentCtrl.getSelImagesSource()); | |
| this.hide(); | |
| a.contentCtrl.hide() | |
| }); | |
| a.topBar.addEventListener("topBarClose", d.closeImagePicker); | |
| if (!window.postMessage) { | |
| a.sendController.addEventListener("closeWindow", | |
| function() { | |
| d.closeOverlay() | |
| }) | |
| } | |
| } | |
| }; | |
| d.init(); (function() { | |
| window._bdXC_loaded = true; | |
| window._bdXC = { | |
| reInit: function() { | |
| d.showImagePicker() | |
| }, | |
| init: function() { | |
| d.showImagePicker() | |
| } | |
| } | |
| })(); | |
| window._bdXC.init() | |
| })(); |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| javascript:void(document.body.appendChild(document.createElement('script')).src='https://gist.githubusercontent.com/wenketel/f0eac1266125c2e4bb64/raw/92c98189c700c41d20ffc54a3a955dc369cec222/baiduxiangce.js') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment