Release 4chan X v1.9.1.0.
This commit is contained in:
parent
7d6566b4cb
commit
741cee51f9
10
CHANGELOG.md
10
CHANGELOG.md
@ -1,3 +1,13 @@
|
|||||||
|
### v1.9.1.0
|
||||||
|
*2014-08-31*
|
||||||
|
|
||||||
|
**ccd0**
|
||||||
|
- Work around restriction on loading HTTP content from HTTPS pages in Chromium.
|
||||||
|
This applies to files posted via the `Post from URL` mechanism and posts loaded from HTTP-only archives if `Except Archives from Encryption` is selected.
|
||||||
|
Although not done using this workaround, 4chan X also requests HTTP content from HTTPS pages when you embed content from HTTP-only sites such as Vocaroo.
|
||||||
|
- Start GIF/WebM files from the beginning when re-opened via inlining or hover view. Inlining a GIF/WebM that you are already watching via hover view does not restart it.
|
||||||
|
- Fix a bug that sometimes caused the QR's captcha response line to be pushed offscreen when a captcha was loaded.
|
||||||
|
|
||||||
### v1.9.0.6
|
### v1.9.0.6
|
||||||
*2014-08-31*
|
*2014-08-31*
|
||||||
|
|
||||||
|
|||||||
2
LICENSE
2
LICENSE
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* 4chan X - Version 1.9.0.6
|
* 4chan X - Version 1.9.1.0
|
||||||
*
|
*
|
||||||
* Licensed under the MIT license.
|
* Licensed under the MIT license.
|
||||||
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
||||||
|
|||||||
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X
|
// @name 4chan X
|
||||||
// @version 1.9.0.6
|
// @version 1.9.1.0
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
// Generated by CoffeeScript
|
// Generated by CoffeeScript
|
||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X
|
// @name 4chan X
|
||||||
// @version 1.9.0.6
|
// @version 1.9.1.0
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
@ -24,7 +24,7 @@
|
|||||||
// ==/UserScript==
|
// ==/UserScript==
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 4chan X - Version 1.9.0.6
|
* 4chan X - Version 1.9.1.0
|
||||||
*
|
*
|
||||||
* Licensed under the MIT license.
|
* Licensed under the MIT license.
|
||||||
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
||||||
@ -374,7 +374,7 @@
|
|||||||
doc = d.documentElement;
|
doc = d.documentElement;
|
||||||
|
|
||||||
g = {
|
g = {
|
||||||
VERSION: '1.9.0.6',
|
VERSION: '1.9.1.0',
|
||||||
NAMESPACE: '4chan X.',
|
NAMESPACE: '4chan X.',
|
||||||
NAME: '4chan X',
|
NAME: '4chan X',
|
||||||
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
||||||
@ -1359,6 +1359,7 @@
|
|||||||
if ((_ref4 = this.file.fullImage) != null) {
|
if ((_ref4 = this.file.fullImage) != null) {
|
||||||
_ref4.removeAttribute('id');
|
_ref4.removeAttribute('id');
|
||||||
}
|
}
|
||||||
|
delete file.isHovered;
|
||||||
}
|
}
|
||||||
if (origin.isDead) {
|
if (origin.isDead) {
|
||||||
this.isDead = true;
|
this.isDead = true;
|
||||||
@ -4010,14 +4011,21 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
drag = function(e) {
|
drag = function(e) {
|
||||||
var bottom, clientX, clientY, left, right, style, top;
|
var bottom, clientX, clientY, left, right, style, top, x, y;
|
||||||
clientX = e.clientX, clientY = e.clientY;
|
clientX = e.clientX, clientY = e.clientY;
|
||||||
left = clientX - this.dx;
|
x = clientX - this.dx;
|
||||||
left = left < 10 ? 0 : this.width - left < 10 ? null : left / this.screenWidth * 100 + '%';
|
y = clientY - this.dy;
|
||||||
top = clientY - this.dy;
|
left = right = top = bottom = null;
|
||||||
top = top < (10 + this.topBorder) ? this.topBorder + 'px' : this.height - top < (10 + this.bottomBorder) ? null : top / this.screenHeight * 100 + '%';
|
if (x <= this.width / 2) {
|
||||||
right = left === null ? 0 : null;
|
left = x < 10 ? '0px' : x / this.screenWidth * 100 + '%';
|
||||||
bottom = top === null ? this.bottomBorder + 'px' : null;
|
} else {
|
||||||
|
right = this.width - x < 10 ? '0px' : (this.width - x) / this.screenWidth * 100 + '%';
|
||||||
|
}
|
||||||
|
if (y <= this.height / 2) {
|
||||||
|
top = y < 10 + this.topBorder ? this.topBorder + 'px' : y / this.screenHeight * 100 + '%';
|
||||||
|
} else {
|
||||||
|
bottom = this.height - y < 10 + this.bottomBorder ? this.bottomBorder + 'px' : (this.height - y) / this.screenHeight * 100 + '%';
|
||||||
|
}
|
||||||
style = this.style;
|
style = this.style;
|
||||||
style.left = left;
|
style.left = left;
|
||||||
style.right = right;
|
style.right = right;
|
||||||
@ -4130,85 +4138,87 @@
|
|||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
CrossOrigin = {
|
CrossOrigin = (function() {
|
||||||
file: (function() {
|
return {
|
||||||
var makeBlob;
|
file: (function() {
|
||||||
makeBlob = function(urlBlob, contentType, contentDisposition, url) {
|
var makeBlob;
|
||||||
var blob, match, mime, name, _ref, _ref1, _ref2;
|
makeBlob = function(urlBlob, contentType, contentDisposition, url) {
|
||||||
name = (_ref = url.match(/([^\/]+)\/*$/)) != null ? _ref[1] : void 0;
|
var blob, match, mime, name, _ref, _ref1, _ref2;
|
||||||
mime = (contentType != null ? contentType.match(/[^;]*/)[0] : void 0) || 'application/octet-stream';
|
name = (_ref = url.match(/([^\/]+)\/*$/)) != null ? _ref[1] : void 0;
|
||||||
match = (contentDisposition != null ? (_ref1 = contentDisposition.match(/\bfilename\s*=\s*"((\\"|[^"])+)"/i)) != null ? _ref1[1] : void 0 : void 0) || (contentType != null ? (_ref2 = contentType.match(/\bname\s*=\s*"((\\"|[^"])+)"/i)) != null ? _ref2[1] : void 0 : void 0);
|
mime = (contentType != null ? contentType.match(/[^;]*/)[0] : void 0) || 'application/octet-stream';
|
||||||
if (match) {
|
match = (contentDisposition != null ? (_ref1 = contentDisposition.match(/\bfilename\s*=\s*"((\\"|[^"])+)"/i)) != null ? _ref1[1] : void 0 : void 0) || (contentType != null ? (_ref2 = contentType.match(/\bname\s*=\s*"((\\"|[^"])+)"/i)) != null ? _ref2[1] : void 0 : void 0);
|
||||||
name = match.replace(/\\"/g, '"');
|
if (match) {
|
||||||
}
|
name = match.replace(/\\"/g, '"');
|
||||||
blob = new Blob([urlBlob], {
|
|
||||||
type: mime
|
|
||||||
});
|
|
||||||
blob.name = name;
|
|
||||||
return blob;
|
|
||||||
};
|
|
||||||
return function(url, cb) {
|
|
||||||
return GM_xmlhttpRequest({
|
|
||||||
method: "GET",
|
|
||||||
url: url,
|
|
||||||
overrideMimeType: "text/plain; charset=x-user-defined",
|
|
||||||
onload: function(xhr) {
|
|
||||||
var contentDisposition, contentType, data, i, r, _ref, _ref1;
|
|
||||||
r = xhr.responseText;
|
|
||||||
data = new Uint8Array(r.length);
|
|
||||||
i = 0;
|
|
||||||
while (i < r.length) {
|
|
||||||
data[i] = r.charCodeAt(i);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
contentType = (_ref = xhr.responseHeaders.match(/Content-Type:\s*(.*)/i)) != null ? _ref[1] : void 0;
|
|
||||||
contentDisposition = (_ref1 = xhr.responseHeaders.match(/Content-Disposition:\s*(.*)/i)) != null ? _ref1[1] : void 0;
|
|
||||||
return cb(makeBlob(data, contentType, contentDisposition, url));
|
|
||||||
},
|
|
||||||
onerror: function() {
|
|
||||||
return cb(null);
|
|
||||||
}
|
}
|
||||||
});
|
blob = new Blob([urlBlob], {
|
||||||
};
|
type: mime
|
||||||
})(),
|
});
|
||||||
json: (function() {
|
blob.name = name;
|
||||||
var callbacks, responses;
|
return blob;
|
||||||
callbacks = {};
|
};
|
||||||
responses = {};
|
return function(url, cb) {
|
||||||
return function(url, cb) {
|
return GM_xmlhttpRequest({
|
||||||
if (responses[url]) {
|
method: "GET",
|
||||||
cb(responses[url]);
|
url: url,
|
||||||
return;
|
overrideMimeType: "text/plain; charset=x-user-defined",
|
||||||
}
|
onload: function(xhr) {
|
||||||
if (callbacks[url]) {
|
var contentDisposition, contentType, data, i, r, _ref, _ref1;
|
||||||
callbacks[url].push(cb);
|
r = xhr.responseText;
|
||||||
return;
|
data = new Uint8Array(r.length);
|
||||||
}
|
i = 0;
|
||||||
callbacks[url] = [cb];
|
while (i < r.length) {
|
||||||
return GM_xmlhttpRequest({
|
data[i] = r.charCodeAt(i);
|
||||||
method: "GET",
|
i++;
|
||||||
url: url,
|
}
|
||||||
onload: function(xhr) {
|
contentType = (_ref = xhr.responseHeaders.match(/Content-Type:\s*(.*)/i)) != null ? _ref[1] : void 0;
|
||||||
var response, _i, _len, _ref;
|
contentDisposition = (_ref1 = xhr.responseHeaders.match(/Content-Disposition:\s*(.*)/i)) != null ? _ref1[1] : void 0;
|
||||||
response = JSON.parse(xhr.responseText);
|
return cb(makeBlob(data, contentType, contentDisposition, url));
|
||||||
_ref = callbacks[url];
|
},
|
||||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
onerror: function() {
|
||||||
cb = _ref[_i];
|
return cb(null);
|
||||||
cb(response);
|
|
||||||
}
|
}
|
||||||
delete callbacks[url];
|
});
|
||||||
return responses[url] = response;
|
};
|
||||||
},
|
})(),
|
||||||
onerror: function() {
|
json: (function() {
|
||||||
return delete callbacks[url];
|
var callbacks, responses;
|
||||||
},
|
callbacks = {};
|
||||||
onabort: function() {
|
responses = {};
|
||||||
return delete callbacks[url];
|
return function(url, cb) {
|
||||||
|
if (responses[url]) {
|
||||||
|
cb(responses[url]);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
});
|
if (callbacks[url]) {
|
||||||
};
|
callbacks[url].push(cb);
|
||||||
})()
|
return;
|
||||||
};
|
}
|
||||||
|
callbacks[url] = [cb];
|
||||||
|
return GM_xmlhttpRequest({
|
||||||
|
method: "GET",
|
||||||
|
url: url,
|
||||||
|
onload: function(xhr) {
|
||||||
|
var response, _i, _len, _ref;
|
||||||
|
response = JSON.parse(xhr.responseText);
|
||||||
|
_ref = callbacks[url];
|
||||||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||||
|
cb = _ref[_i];
|
||||||
|
cb(response);
|
||||||
|
}
|
||||||
|
delete callbacks[url];
|
||||||
|
return responses[url] = response;
|
||||||
|
},
|
||||||
|
onerror: function() {
|
||||||
|
return delete callbacks[url];
|
||||||
|
},
|
||||||
|
onabort: function() {
|
||||||
|
return delete callbacks[url];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
})()
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
|
||||||
Anonymize = {
|
Anonymize = {
|
||||||
init: function() {
|
init: function() {
|
||||||
@ -6221,7 +6231,7 @@
|
|||||||
},
|
},
|
||||||
handleUrl: function() {
|
handleUrl: function() {
|
||||||
var url;
|
var url;
|
||||||
url = prompt("Insert an url:");
|
url = prompt('Enter a URL:');
|
||||||
if (url === null) {
|
if (url === null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -8362,6 +8372,14 @@
|
|||||||
$.on(el, 'error', ImageExpand.error);
|
$.on(el, 'error', ImageExpand.error);
|
||||||
if (file.fullImage) {
|
if (file.fullImage) {
|
||||||
TrashQueue.remove(el);
|
TrashQueue.remove(el);
|
||||||
|
if (!file.isHovered) {
|
||||||
|
if (/\.gif$/.test(el.src)) {
|
||||||
|
el.src = el.src;
|
||||||
|
}
|
||||||
|
if (isVideo) {
|
||||||
|
el.currentTime = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
el.src = src || file.URL;
|
el.src = src || file.URL;
|
||||||
$.after(thumb, el);
|
$.after(thumb, el);
|
||||||
@ -8570,12 +8588,19 @@
|
|||||||
post = Get.postFromNode(this);
|
post = Get.postFromNode(this);
|
||||||
file = post.file;
|
file = post.file;
|
||||||
isVideo = file.isVideo;
|
isVideo = file.isVideo;
|
||||||
if (post.file.isExpanding || post.file.isExpanded) {
|
if (file.isExpanding || file.isExpanded) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
file.isHovered = true;
|
||||||
if (el = file.fullImage) {
|
if (el = file.fullImage) {
|
||||||
el.id = 'ihover';
|
el.id = 'ihover';
|
||||||
TrashQueue.remove(el);
|
TrashQueue.remove(el);
|
||||||
|
if (/\.gif$/.test(el.src)) {
|
||||||
|
el.src = el.src;
|
||||||
|
}
|
||||||
|
if (isVideo) {
|
||||||
|
el.currentTime = 0;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
file.fullImage = el = $.el((isVideo ? 'video' : 'img'), {
|
file.fullImage = el = $.el((isVideo ? 'video' : 'img'), {
|
||||||
className: 'full-image',
|
className: 'full-image',
|
||||||
@ -8610,7 +8635,10 @@
|
|||||||
el.pause();
|
el.pause();
|
||||||
TrashQueue.add(el, post);
|
TrashQueue.add(el, post);
|
||||||
}
|
}
|
||||||
return el.removeAttribute('id');
|
el.removeAttribute('id');
|
||||||
|
return $.queueTask(function() {
|
||||||
|
return delete file.isHovered;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -12786,7 +12814,7 @@
|
|||||||
className: 'dialog'
|
className: 'dialog'
|
||||||
});
|
});
|
||||||
$.extend(dialog, {
|
$.extend(dialog, {
|
||||||
innerHTML: "<nav><div class=sections-list></div><p class='imp-exp-result warning'></p><div class=credits><a class=export>Export</a> | <a class=import>Import</a> | <a class=reset>Reset Settings</a> | <input type=file hidden><a href='https://github.com/ccd0/4chan-x' target=_blank>4chan X</a> | <a href='https://github.com/ccd0/4chan-x/blob/master/CHANGELOG.md' target=_blank>1.9.0.6</a> | <a href='https://github.com/ccd0/4chan-x/issues' target=_blank>Issues</a> | <a href=javascript:; class='close fa fa-times' title=Close></a></div></nav><div class=section-container><section></section></div>"
|
innerHTML: "<nav><div class=sections-list></div><p class='imp-exp-result warning'></p><div class=credits><a class=export>Export</a> | <a class=import>Import</a> | <a class=reset>Reset Settings</a> | <input type=file hidden><a href='https://github.com/ccd0/4chan-x' target=_blank>4chan X</a> | <a href='https://github.com/ccd0/4chan-x/blob/master/CHANGELOG.md' target=_blank>1.9.1.0</a> | <a href='https://github.com/ccd0/4chan-x/issues' target=_blank>Issues</a> | <a href=javascript:; class='close fa fa-times' title=Close></a></div></nav><div class=section-container><section></section></div>"
|
||||||
});
|
});
|
||||||
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
||||||
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
||||||
|
|||||||
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
// Generated by CoffeeScript
|
// Generated by CoffeeScript
|
||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X
|
// @name 4chan X
|
||||||
// @version 1.9.0.6
|
// @version 1.9.1.0
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
@ -23,7 +23,7 @@
|
|||||||
// ==/UserScript==
|
// ==/UserScript==
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 4chan X - Version 1.9.0.6
|
* 4chan X - Version 1.9.1.0
|
||||||
*
|
*
|
||||||
* Licensed under the MIT license.
|
* Licensed under the MIT license.
|
||||||
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
||||||
@ -373,7 +373,7 @@
|
|||||||
doc = d.documentElement;
|
doc = d.documentElement;
|
||||||
|
|
||||||
g = {
|
g = {
|
||||||
VERSION: '1.9.0.6',
|
VERSION: '1.9.1.0',
|
||||||
NAMESPACE: '4chan X.',
|
NAMESPACE: '4chan X.',
|
||||||
NAME: '4chan X',
|
NAME: '4chan X',
|
||||||
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
||||||
@ -1358,6 +1358,7 @@
|
|||||||
if ((_ref4 = this.file.fullImage) != null) {
|
if ((_ref4 = this.file.fullImage) != null) {
|
||||||
_ref4.removeAttribute('id');
|
_ref4.removeAttribute('id');
|
||||||
}
|
}
|
||||||
|
delete file.isHovered;
|
||||||
}
|
}
|
||||||
if (origin.isDead) {
|
if (origin.isDead) {
|
||||||
this.isDead = true;
|
this.isDead = true;
|
||||||
@ -4009,14 +4010,21 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
drag = function(e) {
|
drag = function(e) {
|
||||||
var bottom, clientX, clientY, left, right, style, top;
|
var bottom, clientX, clientY, left, right, style, top, x, y;
|
||||||
clientX = e.clientX, clientY = e.clientY;
|
clientX = e.clientX, clientY = e.clientY;
|
||||||
left = clientX - this.dx;
|
x = clientX - this.dx;
|
||||||
left = left < 10 ? 0 : this.width - left < 10 ? null : left / this.screenWidth * 100 + '%';
|
y = clientY - this.dy;
|
||||||
top = clientY - this.dy;
|
left = right = top = bottom = null;
|
||||||
top = top < (10 + this.topBorder) ? this.topBorder + 'px' : this.height - top < (10 + this.bottomBorder) ? null : top / this.screenHeight * 100 + '%';
|
if (x <= this.width / 2) {
|
||||||
right = left === null ? 0 : null;
|
left = x < 10 ? '0px' : x / this.screenWidth * 100 + '%';
|
||||||
bottom = top === null ? this.bottomBorder + 'px' : null;
|
} else {
|
||||||
|
right = this.width - x < 10 ? '0px' : (this.width - x) / this.screenWidth * 100 + '%';
|
||||||
|
}
|
||||||
|
if (y <= this.height / 2) {
|
||||||
|
top = y < 10 + this.topBorder ? this.topBorder + 'px' : y / this.screenHeight * 100 + '%';
|
||||||
|
} else {
|
||||||
|
bottom = this.height - y < 10 + this.bottomBorder ? this.bottomBorder + 'px' : (this.height - y) / this.screenHeight * 100 + '%';
|
||||||
|
}
|
||||||
style = this.style;
|
style = this.style;
|
||||||
style.left = left;
|
style.left = left;
|
||||||
style.right = right;
|
style.right = right;
|
||||||
@ -4129,85 +4137,87 @@
|
|||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
CrossOrigin = {
|
CrossOrigin = (function() {
|
||||||
file: (function() {
|
return {
|
||||||
var makeBlob;
|
file: (function() {
|
||||||
makeBlob = function(urlBlob, contentType, contentDisposition, url) {
|
var makeBlob;
|
||||||
var blob, match, mime, name, _ref, _ref1, _ref2;
|
makeBlob = function(urlBlob, contentType, contentDisposition, url) {
|
||||||
name = (_ref = url.match(/([^\/]+)\/*$/)) != null ? _ref[1] : void 0;
|
var blob, match, mime, name, _ref, _ref1, _ref2;
|
||||||
mime = (contentType != null ? contentType.match(/[^;]*/)[0] : void 0) || 'application/octet-stream';
|
name = (_ref = url.match(/([^\/]+)\/*$/)) != null ? _ref[1] : void 0;
|
||||||
match = (contentDisposition != null ? (_ref1 = contentDisposition.match(/\bfilename\s*=\s*"((\\"|[^"])+)"/i)) != null ? _ref1[1] : void 0 : void 0) || (contentType != null ? (_ref2 = contentType.match(/\bname\s*=\s*"((\\"|[^"])+)"/i)) != null ? _ref2[1] : void 0 : void 0);
|
mime = (contentType != null ? contentType.match(/[^;]*/)[0] : void 0) || 'application/octet-stream';
|
||||||
if (match) {
|
match = (contentDisposition != null ? (_ref1 = contentDisposition.match(/\bfilename\s*=\s*"((\\"|[^"])+)"/i)) != null ? _ref1[1] : void 0 : void 0) || (contentType != null ? (_ref2 = contentType.match(/\bname\s*=\s*"((\\"|[^"])+)"/i)) != null ? _ref2[1] : void 0 : void 0);
|
||||||
name = match.replace(/\\"/g, '"');
|
if (match) {
|
||||||
}
|
name = match.replace(/\\"/g, '"');
|
||||||
blob = new Blob([urlBlob], {
|
|
||||||
type: mime
|
|
||||||
});
|
|
||||||
blob.name = name;
|
|
||||||
return blob;
|
|
||||||
};
|
|
||||||
return function(url, cb) {
|
|
||||||
return GM_xmlhttpRequest({
|
|
||||||
method: "GET",
|
|
||||||
url: url,
|
|
||||||
overrideMimeType: "text/plain; charset=x-user-defined",
|
|
||||||
onload: function(xhr) {
|
|
||||||
var contentDisposition, contentType, data, i, r, _ref, _ref1;
|
|
||||||
r = xhr.responseText;
|
|
||||||
data = new Uint8Array(r.length);
|
|
||||||
i = 0;
|
|
||||||
while (i < r.length) {
|
|
||||||
data[i] = r.charCodeAt(i);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
contentType = (_ref = xhr.responseHeaders.match(/Content-Type:\s*(.*)/i)) != null ? _ref[1] : void 0;
|
|
||||||
contentDisposition = (_ref1 = xhr.responseHeaders.match(/Content-Disposition:\s*(.*)/i)) != null ? _ref1[1] : void 0;
|
|
||||||
return cb(makeBlob(data, contentType, contentDisposition, url));
|
|
||||||
},
|
|
||||||
onerror: function() {
|
|
||||||
return cb(null);
|
|
||||||
}
|
}
|
||||||
});
|
blob = new Blob([urlBlob], {
|
||||||
};
|
type: mime
|
||||||
})(),
|
});
|
||||||
json: (function() {
|
blob.name = name;
|
||||||
var callbacks, responses;
|
return blob;
|
||||||
callbacks = {};
|
};
|
||||||
responses = {};
|
return function(url, cb) {
|
||||||
return function(url, cb) {
|
return GM_xmlhttpRequest({
|
||||||
if (responses[url]) {
|
method: "GET",
|
||||||
cb(responses[url]);
|
url: url,
|
||||||
return;
|
overrideMimeType: "text/plain; charset=x-user-defined",
|
||||||
}
|
onload: function(xhr) {
|
||||||
if (callbacks[url]) {
|
var contentDisposition, contentType, data, i, r, _ref, _ref1;
|
||||||
callbacks[url].push(cb);
|
r = xhr.responseText;
|
||||||
return;
|
data = new Uint8Array(r.length);
|
||||||
}
|
i = 0;
|
||||||
callbacks[url] = [cb];
|
while (i < r.length) {
|
||||||
return GM_xmlhttpRequest({
|
data[i] = r.charCodeAt(i);
|
||||||
method: "GET",
|
i++;
|
||||||
url: url,
|
}
|
||||||
onload: function(xhr) {
|
contentType = (_ref = xhr.responseHeaders.match(/Content-Type:\s*(.*)/i)) != null ? _ref[1] : void 0;
|
||||||
var response, _i, _len, _ref;
|
contentDisposition = (_ref1 = xhr.responseHeaders.match(/Content-Disposition:\s*(.*)/i)) != null ? _ref1[1] : void 0;
|
||||||
response = JSON.parse(xhr.responseText);
|
return cb(makeBlob(data, contentType, contentDisposition, url));
|
||||||
_ref = callbacks[url];
|
},
|
||||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
onerror: function() {
|
||||||
cb = _ref[_i];
|
return cb(null);
|
||||||
cb(response);
|
|
||||||
}
|
}
|
||||||
delete callbacks[url];
|
});
|
||||||
return responses[url] = response;
|
};
|
||||||
},
|
})(),
|
||||||
onerror: function() {
|
json: (function() {
|
||||||
return delete callbacks[url];
|
var callbacks, responses;
|
||||||
},
|
callbacks = {};
|
||||||
onabort: function() {
|
responses = {};
|
||||||
return delete callbacks[url];
|
return function(url, cb) {
|
||||||
|
if (responses[url]) {
|
||||||
|
cb(responses[url]);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
});
|
if (callbacks[url]) {
|
||||||
};
|
callbacks[url].push(cb);
|
||||||
})()
|
return;
|
||||||
};
|
}
|
||||||
|
callbacks[url] = [cb];
|
||||||
|
return GM_xmlhttpRequest({
|
||||||
|
method: "GET",
|
||||||
|
url: url,
|
||||||
|
onload: function(xhr) {
|
||||||
|
var response, _i, _len, _ref;
|
||||||
|
response = JSON.parse(xhr.responseText);
|
||||||
|
_ref = callbacks[url];
|
||||||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||||
|
cb = _ref[_i];
|
||||||
|
cb(response);
|
||||||
|
}
|
||||||
|
delete callbacks[url];
|
||||||
|
return responses[url] = response;
|
||||||
|
},
|
||||||
|
onerror: function() {
|
||||||
|
return delete callbacks[url];
|
||||||
|
},
|
||||||
|
onabort: function() {
|
||||||
|
return delete callbacks[url];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
})()
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
|
||||||
Anonymize = {
|
Anonymize = {
|
||||||
init: function() {
|
init: function() {
|
||||||
@ -6220,7 +6230,7 @@
|
|||||||
},
|
},
|
||||||
handleUrl: function() {
|
handleUrl: function() {
|
||||||
var url;
|
var url;
|
||||||
url = prompt("Insert an url:");
|
url = prompt('Enter a URL:');
|
||||||
if (url === null) {
|
if (url === null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -8361,6 +8371,14 @@
|
|||||||
$.on(el, 'error', ImageExpand.error);
|
$.on(el, 'error', ImageExpand.error);
|
||||||
if (file.fullImage) {
|
if (file.fullImage) {
|
||||||
TrashQueue.remove(el);
|
TrashQueue.remove(el);
|
||||||
|
if (!file.isHovered) {
|
||||||
|
if (/\.gif$/.test(el.src)) {
|
||||||
|
el.src = el.src;
|
||||||
|
}
|
||||||
|
if (isVideo) {
|
||||||
|
el.currentTime = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
el.src = src || file.URL;
|
el.src = src || file.URL;
|
||||||
$.after(thumb, el);
|
$.after(thumb, el);
|
||||||
@ -8569,12 +8587,19 @@
|
|||||||
post = Get.postFromNode(this);
|
post = Get.postFromNode(this);
|
||||||
file = post.file;
|
file = post.file;
|
||||||
isVideo = file.isVideo;
|
isVideo = file.isVideo;
|
||||||
if (post.file.isExpanding || post.file.isExpanded) {
|
if (file.isExpanding || file.isExpanded) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
file.isHovered = true;
|
||||||
if (el = file.fullImage) {
|
if (el = file.fullImage) {
|
||||||
el.id = 'ihover';
|
el.id = 'ihover';
|
||||||
TrashQueue.remove(el);
|
TrashQueue.remove(el);
|
||||||
|
if (/\.gif$/.test(el.src)) {
|
||||||
|
el.src = el.src;
|
||||||
|
}
|
||||||
|
if (isVideo) {
|
||||||
|
el.currentTime = 0;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
file.fullImage = el = $.el((isVideo ? 'video' : 'img'), {
|
file.fullImage = el = $.el((isVideo ? 'video' : 'img'), {
|
||||||
className: 'full-image',
|
className: 'full-image',
|
||||||
@ -8609,7 +8634,10 @@
|
|||||||
el.pause();
|
el.pause();
|
||||||
TrashQueue.add(el, post);
|
TrashQueue.add(el, post);
|
||||||
}
|
}
|
||||||
return el.removeAttribute('id');
|
el.removeAttribute('id');
|
||||||
|
return $.queueTask(function() {
|
||||||
|
return delete file.isHovered;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -12785,7 +12813,7 @@
|
|||||||
className: 'dialog'
|
className: 'dialog'
|
||||||
});
|
});
|
||||||
$.extend(dialog, {
|
$.extend(dialog, {
|
||||||
innerHTML: "<nav><div class=sections-list></div><p class='imp-exp-result warning'></p><div class=credits><a class=export>Export</a> | <a class=import>Import</a> | <a class=reset>Reset Settings</a> | <input type=file hidden><a href='https://github.com/ccd0/4chan-x' target=_blank>4chan X</a> | <a href='https://github.com/ccd0/4chan-x/blob/master/CHANGELOG.md' target=_blank>1.9.0.6</a> | <a href='https://github.com/ccd0/4chan-x/issues' target=_blank>Issues</a> | <a href=javascript:; class='close fa fa-times' title=Close></a></div></nav><div class=section-container><section></section></div>"
|
innerHTML: "<nav><div class=sections-list></div><p class='imp-exp-result warning'></p><div class=credits><a class=export>Export</a> | <a class=import>Import</a> | <a class=reset>Reset Settings</a> | <input type=file hidden><a href='https://github.com/ccd0/4chan-x' target=_blank>4chan X</a> | <a href='https://github.com/ccd0/4chan-x/blob/master/CHANGELOG.md' target=_blank>1.9.1.0</a> | <a href='https://github.com/ccd0/4chan-x/issues' target=_blank>Issues</a> | <a href=javascript:; class='close fa fa-times' title=Close></a></div></nav><div class=section-container><section></section></div>"
|
||||||
});
|
});
|
||||||
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
||||||
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
||||||
|
|||||||
Binary file not shown.
@ -1,6 +1,6 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X
|
// @name 4chan X
|
||||||
// @version 1.9.0.6
|
// @version 1.9.1.0
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
// Generated by CoffeeScript
|
// Generated by CoffeeScript
|
||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name 4chan X
|
// @name 4chan X
|
||||||
// @version 1.9.0.6
|
// @version 1.9.1.0
|
||||||
// @minGMVer 1.14
|
// @minGMVer 1.14
|
||||||
// @minFFVer 26
|
// @minFFVer 26
|
||||||
// @namespace 4chan-X
|
// @namespace 4chan-X
|
||||||
@ -24,7 +24,7 @@
|
|||||||
// ==/UserScript==
|
// ==/UserScript==
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 4chan X - Version 1.9.0.6
|
* 4chan X - Version 1.9.1.0
|
||||||
*
|
*
|
||||||
* Licensed under the MIT license.
|
* Licensed under the MIT license.
|
||||||
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
* https://github.com/ccd0/4chan-x/blob/master/LICENSE
|
||||||
@ -374,7 +374,7 @@
|
|||||||
doc = d.documentElement;
|
doc = d.documentElement;
|
||||||
|
|
||||||
g = {
|
g = {
|
||||||
VERSION: '1.9.0.6',
|
VERSION: '1.9.1.0',
|
||||||
NAMESPACE: '4chan X.',
|
NAMESPACE: '4chan X.',
|
||||||
NAME: '4chan X',
|
NAME: '4chan X',
|
||||||
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
FAQ: 'https://github.com/ccd0/4chan-x/wiki/Frequently-Asked-Questions',
|
||||||
@ -1359,6 +1359,7 @@
|
|||||||
if ((_ref4 = this.file.fullImage) != null) {
|
if ((_ref4 = this.file.fullImage) != null) {
|
||||||
_ref4.removeAttribute('id');
|
_ref4.removeAttribute('id');
|
||||||
}
|
}
|
||||||
|
delete file.isHovered;
|
||||||
}
|
}
|
||||||
if (origin.isDead) {
|
if (origin.isDead) {
|
||||||
this.isDead = true;
|
this.isDead = true;
|
||||||
@ -4010,14 +4011,21 @@
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
drag = function(e) {
|
drag = function(e) {
|
||||||
var bottom, clientX, clientY, left, right, style, top;
|
var bottom, clientX, clientY, left, right, style, top, x, y;
|
||||||
clientX = e.clientX, clientY = e.clientY;
|
clientX = e.clientX, clientY = e.clientY;
|
||||||
left = clientX - this.dx;
|
x = clientX - this.dx;
|
||||||
left = left < 10 ? 0 : this.width - left < 10 ? null : left / this.screenWidth * 100 + '%';
|
y = clientY - this.dy;
|
||||||
top = clientY - this.dy;
|
left = right = top = bottom = null;
|
||||||
top = top < (10 + this.topBorder) ? this.topBorder + 'px' : this.height - top < (10 + this.bottomBorder) ? null : top / this.screenHeight * 100 + '%';
|
if (x <= this.width / 2) {
|
||||||
right = left === null ? 0 : null;
|
left = x < 10 ? '0px' : x / this.screenWidth * 100 + '%';
|
||||||
bottom = top === null ? this.bottomBorder + 'px' : null;
|
} else {
|
||||||
|
right = this.width - x < 10 ? '0px' : (this.width - x) / this.screenWidth * 100 + '%';
|
||||||
|
}
|
||||||
|
if (y <= this.height / 2) {
|
||||||
|
top = y < 10 + this.topBorder ? this.topBorder + 'px' : y / this.screenHeight * 100 + '%';
|
||||||
|
} else {
|
||||||
|
bottom = this.height - y < 10 + this.bottomBorder ? this.bottomBorder + 'px' : (this.height - y) / this.screenHeight * 100 + '%';
|
||||||
|
}
|
||||||
style = this.style;
|
style = this.style;
|
||||||
style.left = left;
|
style.left = left;
|
||||||
style.right = right;
|
style.right = right;
|
||||||
@ -4130,85 +4138,87 @@
|
|||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
CrossOrigin = {
|
CrossOrigin = (function() {
|
||||||
file: (function() {
|
return {
|
||||||
var makeBlob;
|
file: (function() {
|
||||||
makeBlob = function(urlBlob, contentType, contentDisposition, url) {
|
var makeBlob;
|
||||||
var blob, match, mime, name, _ref, _ref1, _ref2;
|
makeBlob = function(urlBlob, contentType, contentDisposition, url) {
|
||||||
name = (_ref = url.match(/([^\/]+)\/*$/)) != null ? _ref[1] : void 0;
|
var blob, match, mime, name, _ref, _ref1, _ref2;
|
||||||
mime = (contentType != null ? contentType.match(/[^;]*/)[0] : void 0) || 'application/octet-stream';
|
name = (_ref = url.match(/([^\/]+)\/*$/)) != null ? _ref[1] : void 0;
|
||||||
match = (contentDisposition != null ? (_ref1 = contentDisposition.match(/\bfilename\s*=\s*"((\\"|[^"])+)"/i)) != null ? _ref1[1] : void 0 : void 0) || (contentType != null ? (_ref2 = contentType.match(/\bname\s*=\s*"((\\"|[^"])+)"/i)) != null ? _ref2[1] : void 0 : void 0);
|
mime = (contentType != null ? contentType.match(/[^;]*/)[0] : void 0) || 'application/octet-stream';
|
||||||
if (match) {
|
match = (contentDisposition != null ? (_ref1 = contentDisposition.match(/\bfilename\s*=\s*"((\\"|[^"])+)"/i)) != null ? _ref1[1] : void 0 : void 0) || (contentType != null ? (_ref2 = contentType.match(/\bname\s*=\s*"((\\"|[^"])+)"/i)) != null ? _ref2[1] : void 0 : void 0);
|
||||||
name = match.replace(/\\"/g, '"');
|
if (match) {
|
||||||
}
|
name = match.replace(/\\"/g, '"');
|
||||||
blob = new Blob([urlBlob], {
|
|
||||||
type: mime
|
|
||||||
});
|
|
||||||
blob.name = name;
|
|
||||||
return blob;
|
|
||||||
};
|
|
||||||
return function(url, cb) {
|
|
||||||
return GM_xmlhttpRequest({
|
|
||||||
method: "GET",
|
|
||||||
url: url,
|
|
||||||
overrideMimeType: "text/plain; charset=x-user-defined",
|
|
||||||
onload: function(xhr) {
|
|
||||||
var contentDisposition, contentType, data, i, r, _ref, _ref1;
|
|
||||||
r = xhr.responseText;
|
|
||||||
data = new Uint8Array(r.length);
|
|
||||||
i = 0;
|
|
||||||
while (i < r.length) {
|
|
||||||
data[i] = r.charCodeAt(i);
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
contentType = (_ref = xhr.responseHeaders.match(/Content-Type:\s*(.*)/i)) != null ? _ref[1] : void 0;
|
|
||||||
contentDisposition = (_ref1 = xhr.responseHeaders.match(/Content-Disposition:\s*(.*)/i)) != null ? _ref1[1] : void 0;
|
|
||||||
return cb(makeBlob(data, contentType, contentDisposition, url));
|
|
||||||
},
|
|
||||||
onerror: function() {
|
|
||||||
return cb(null);
|
|
||||||
}
|
}
|
||||||
});
|
blob = new Blob([urlBlob], {
|
||||||
};
|
type: mime
|
||||||
})(),
|
});
|
||||||
json: (function() {
|
blob.name = name;
|
||||||
var callbacks, responses;
|
return blob;
|
||||||
callbacks = {};
|
};
|
||||||
responses = {};
|
return function(url, cb) {
|
||||||
return function(url, cb) {
|
return GM_xmlhttpRequest({
|
||||||
if (responses[url]) {
|
method: "GET",
|
||||||
cb(responses[url]);
|
url: url,
|
||||||
return;
|
overrideMimeType: "text/plain; charset=x-user-defined",
|
||||||
}
|
onload: function(xhr) {
|
||||||
if (callbacks[url]) {
|
var contentDisposition, contentType, data, i, r, _ref, _ref1;
|
||||||
callbacks[url].push(cb);
|
r = xhr.responseText;
|
||||||
return;
|
data = new Uint8Array(r.length);
|
||||||
}
|
i = 0;
|
||||||
callbacks[url] = [cb];
|
while (i < r.length) {
|
||||||
return GM_xmlhttpRequest({
|
data[i] = r.charCodeAt(i);
|
||||||
method: "GET",
|
i++;
|
||||||
url: url,
|
}
|
||||||
onload: function(xhr) {
|
contentType = (_ref = xhr.responseHeaders.match(/Content-Type:\s*(.*)/i)) != null ? _ref[1] : void 0;
|
||||||
var response, _i, _len, _ref;
|
contentDisposition = (_ref1 = xhr.responseHeaders.match(/Content-Disposition:\s*(.*)/i)) != null ? _ref1[1] : void 0;
|
||||||
response = JSON.parse(xhr.responseText);
|
return cb(makeBlob(data, contentType, contentDisposition, url));
|
||||||
_ref = callbacks[url];
|
},
|
||||||
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
onerror: function() {
|
||||||
cb = _ref[_i];
|
return cb(null);
|
||||||
cb(response);
|
|
||||||
}
|
}
|
||||||
delete callbacks[url];
|
});
|
||||||
return responses[url] = response;
|
};
|
||||||
},
|
})(),
|
||||||
onerror: function() {
|
json: (function() {
|
||||||
return delete callbacks[url];
|
var callbacks, responses;
|
||||||
},
|
callbacks = {};
|
||||||
onabort: function() {
|
responses = {};
|
||||||
return delete callbacks[url];
|
return function(url, cb) {
|
||||||
|
if (responses[url]) {
|
||||||
|
cb(responses[url]);
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
});
|
if (callbacks[url]) {
|
||||||
};
|
callbacks[url].push(cb);
|
||||||
})()
|
return;
|
||||||
};
|
}
|
||||||
|
callbacks[url] = [cb];
|
||||||
|
return GM_xmlhttpRequest({
|
||||||
|
method: "GET",
|
||||||
|
url: url,
|
||||||
|
onload: function(xhr) {
|
||||||
|
var response, _i, _len, _ref;
|
||||||
|
response = JSON.parse(xhr.responseText);
|
||||||
|
_ref = callbacks[url];
|
||||||
|
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
||||||
|
cb = _ref[_i];
|
||||||
|
cb(response);
|
||||||
|
}
|
||||||
|
delete callbacks[url];
|
||||||
|
return responses[url] = response;
|
||||||
|
},
|
||||||
|
onerror: function() {
|
||||||
|
return delete callbacks[url];
|
||||||
|
},
|
||||||
|
onabort: function() {
|
||||||
|
return delete callbacks[url];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
})()
|
||||||
|
};
|
||||||
|
})();
|
||||||
|
|
||||||
Anonymize = {
|
Anonymize = {
|
||||||
init: function() {
|
init: function() {
|
||||||
@ -6221,7 +6231,7 @@
|
|||||||
},
|
},
|
||||||
handleUrl: function() {
|
handleUrl: function() {
|
||||||
var url;
|
var url;
|
||||||
url = prompt("Insert an url:");
|
url = prompt('Enter a URL:');
|
||||||
if (url === null) {
|
if (url === null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -8362,6 +8372,14 @@
|
|||||||
$.on(el, 'error', ImageExpand.error);
|
$.on(el, 'error', ImageExpand.error);
|
||||||
if (file.fullImage) {
|
if (file.fullImage) {
|
||||||
TrashQueue.remove(el);
|
TrashQueue.remove(el);
|
||||||
|
if (!file.isHovered) {
|
||||||
|
if (/\.gif$/.test(el.src)) {
|
||||||
|
el.src = el.src;
|
||||||
|
}
|
||||||
|
if (isVideo) {
|
||||||
|
el.currentTime = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
el.src = src || file.URL;
|
el.src = src || file.URL;
|
||||||
$.after(thumb, el);
|
$.after(thumb, el);
|
||||||
@ -8570,12 +8588,19 @@
|
|||||||
post = Get.postFromNode(this);
|
post = Get.postFromNode(this);
|
||||||
file = post.file;
|
file = post.file;
|
||||||
isVideo = file.isVideo;
|
isVideo = file.isVideo;
|
||||||
if (post.file.isExpanding || post.file.isExpanded) {
|
if (file.isExpanding || file.isExpanded) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
file.isHovered = true;
|
||||||
if (el = file.fullImage) {
|
if (el = file.fullImage) {
|
||||||
el.id = 'ihover';
|
el.id = 'ihover';
|
||||||
TrashQueue.remove(el);
|
TrashQueue.remove(el);
|
||||||
|
if (/\.gif$/.test(el.src)) {
|
||||||
|
el.src = el.src;
|
||||||
|
}
|
||||||
|
if (isVideo) {
|
||||||
|
el.currentTime = 0;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
file.fullImage = el = $.el((isVideo ? 'video' : 'img'), {
|
file.fullImage = el = $.el((isVideo ? 'video' : 'img'), {
|
||||||
className: 'full-image',
|
className: 'full-image',
|
||||||
@ -8610,7 +8635,10 @@
|
|||||||
el.pause();
|
el.pause();
|
||||||
TrashQueue.add(el, post);
|
TrashQueue.add(el, post);
|
||||||
}
|
}
|
||||||
return el.removeAttribute('id');
|
el.removeAttribute('id');
|
||||||
|
return $.queueTask(function() {
|
||||||
|
return delete file.isHovered;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
@ -12786,7 +12814,7 @@
|
|||||||
className: 'dialog'
|
className: 'dialog'
|
||||||
});
|
});
|
||||||
$.extend(dialog, {
|
$.extend(dialog, {
|
||||||
innerHTML: "<nav><div class=sections-list></div><p class='imp-exp-result warning'></p><div class=credits><a class=export>Export</a> | <a class=import>Import</a> | <a class=reset>Reset Settings</a> | <input type=file hidden><a href='https://github.com/ccd0/4chan-x' target=_blank>4chan X</a> | <a href='https://github.com/ccd0/4chan-x/blob/master/CHANGELOG.md' target=_blank>1.9.0.6</a> | <a href='https://github.com/ccd0/4chan-x/issues' target=_blank>Issues</a> | <a href=javascript:; class='close fa fa-times' title=Close></a></div></nav><div class=section-container><section></section></div>"
|
innerHTML: "<nav><div class=sections-list></div><p class='imp-exp-result warning'></p><div class=credits><a class=export>Export</a> | <a class=import>Import</a> | <a class=reset>Reset Settings</a> | <input type=file hidden><a href='https://github.com/ccd0/4chan-x' target=_blank>4chan X</a> | <a href='https://github.com/ccd0/4chan-x/blob/master/CHANGELOG.md' target=_blank>1.9.1.0</a> | <a href='https://github.com/ccd0/4chan-x/issues' target=_blank>Issues</a> | <a href=javascript:; class='close fa fa-times' title=Close></a></div></nav><div class=section-container><section></section></div>"
|
||||||
});
|
});
|
||||||
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
$.on($('.export', Settings.dialog), 'click', Settings["export"]);
|
||||||
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
$.on($('.import', Settings.dialog), 'click', Settings["import"]);
|
||||||
|
|||||||
Binary file not shown.
@ -1,7 +1,7 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
||||||
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
||||||
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.9.0.6' />
|
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X-beta.crx' version='1.9.1.0' />
|
||||||
</app>
|
</app>
|
||||||
</gupdate>
|
</gupdate>
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
<?xml version='1.0' encoding='UTF-8'?>
|
<?xml version='1.0' encoding='UTF-8'?>
|
||||||
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
<gupdate xmlns='http://www.google.com/update2/response' protocol='2.0'>
|
||||||
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
<app appid='lacclbnghgdicfifcamcmcnilckjamag'>
|
||||||
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.9.0.6' />
|
<updatecheck codebase='https://ccd0.github.io/4chan-x/builds/4chan-X.crx' version='1.9.1.0' />
|
||||||
</app>
|
</app>
|
||||||
</gupdate>
|
</gupdate>
|
||||||
|
|
||||||
|
|||||||
@ -3,7 +3,7 @@
|
|||||||
"description": "Cross-browser userscript for maximum lurking on 4chan.",
|
"description": "Cross-browser userscript for maximum lurking on 4chan.",
|
||||||
"meta": {
|
"meta": {
|
||||||
"name": "4chan X",
|
"name": "4chan X",
|
||||||
"version": "1.9.0.6",
|
"version": "1.9.1.0",
|
||||||
"repo": "https://github.com/ccd0/4chan-x/",
|
"repo": "https://github.com/ccd0/4chan-x/",
|
||||||
"page": "https://github.com/ccd0/4chan-x",
|
"page": "https://github.com/ccd0/4chan-x",
|
||||||
"downloads": "https://ccd0.github.io/4chan-x/builds/",
|
"downloads": "https://ccd0.github.io/4chan-x/builds/",
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user