123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- function isValidUrl(url) {
- return isOnlineUrl(url) || isDataUrl(url);
- }
- function isOnlineUrl(url) {
- return /(ht|f)tp(s?):\/\/([^ \\/]*\.)+[^ \\/]*(:[0-9]+)?\/?/.test(url);
- }
- function isDataUrl(url) {
- return /data:image\/(\w+);base64,(.*)/.test(url);
- }
- /**
- * 深度对比两个对象是否一致
- * from: https://github.com/epoberezkin/fast-deep-equal
- * @param {Object} a 对象a
- * @param {Object} b 对象b
- * @return {Boolean} 是否相同
- */
- /* eslint-disable */
- function equal(a, b) {
- if (a === b) return true;
- if (a && b && typeof a == 'object' && typeof b == 'object') {
- var arrA = Array.isArray(a),
- arrB = Array.isArray(b),
- i,
- length,
- key;
- if (arrA && arrB) {
- length = a.length;
- if (length != b.length) return false;
- for (i = length; i-- !== 0; ) if (!equal(a[i], b[i])) return false;
- return true;
- }
- if (arrA != arrB) return false;
- var dateA = a instanceof Date,
- dateB = b instanceof Date;
- if (dateA != dateB) return false;
- if (dateA && dateB) return a.getTime() == b.getTime();
- var regexpA = a instanceof RegExp,
- regexpB = b instanceof RegExp;
- if (regexpA != regexpB) return false;
- if (regexpA && regexpB) return a.toString() == b.toString();
- var keys = Object.keys(a);
- length = keys.length;
- if (length !== Object.keys(b).length) return false;
- for (i = length; i-- !== 0; ) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
- for (i = length; i-- !== 0; ) {
- key = keys[i];
- if (!equal(a[key], b[key])) return false;
- }
- return true;
- }
- return a !== a && b !== b;
- }
- module.exports = {
- isValidUrl,
- isOnlineUrl,
- isDataUrl,
- equal
- };
|