qr part 1
This commit is contained in:
parent
59633ea1dd
commit
b46577756e
64
4chan_x.js
64
4chan_x.js
@ -230,6 +230,14 @@
|
|||||||
return object;
|
return object;
|
||||||
};
|
};
|
||||||
$.extend($, {
|
$.extend($, {
|
||||||
|
globalEval: function(code) {
|
||||||
|
var script;
|
||||||
|
script = $.el('script', {
|
||||||
|
textContent: "(" + code + ")()"
|
||||||
|
});
|
||||||
|
$.append(d.head, script);
|
||||||
|
return $.remove(script);
|
||||||
|
},
|
||||||
get: function(url, cb) {
|
get: function(url, cb) {
|
||||||
var r;
|
var r;
|
||||||
r = new XMLHttpRequest();
|
r = new XMLHttpRequest();
|
||||||
@ -931,8 +939,9 @@
|
|||||||
name: 'iframe'
|
name: 'iframe'
|
||||||
});
|
});
|
||||||
$.append(d.body, iframe);
|
$.append(d.body, iframe);
|
||||||
$.bind(iframe, 'load', qr.cb.load);
|
$.globalEval(qr.eval.load);
|
||||||
$.bind(window, 'message', qr.cb.messageTop);
|
$.globalEval(qr.eval.messageTop);
|
||||||
|
$.bind(window, 'message2', qr.cb.messageTop);
|
||||||
return $('#recaptcha_response_field').id = '';
|
return $('#recaptcha_response_field').id = '';
|
||||||
},
|
},
|
||||||
autohide: {
|
autohide: {
|
||||||
@ -945,6 +954,35 @@
|
|||||||
return (_ref = $('#qr input[title=autohide]:checked')) != null ? _ref.click() : void 0;
|
return (_ref = $('#qr input[title=autohide]:checked')) != null ? _ref.click() : void 0;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
eval: {
|
||||||
|
load: function() {
|
||||||
|
var load;
|
||||||
|
load = function(e) {
|
||||||
|
return e.target.contentWindow.postMessage('', '*');
|
||||||
|
};
|
||||||
|
return document.querySelector('iframe[name=iframe]').addEventListener('load', load, true);
|
||||||
|
},
|
||||||
|
messageTop: function() {
|
||||||
|
var message;
|
||||||
|
message = function(e) {
|
||||||
|
var e2;
|
||||||
|
e2 = document.createEvent('MessageEvent');
|
||||||
|
e2.initMessageEvent('message2', true, true, e.data, e.origin, '', null, null);
|
||||||
|
return window.dispatchEvent(e2);
|
||||||
|
};
|
||||||
|
return window.addEventListener('message', message, true);
|
||||||
|
},
|
||||||
|
messageIframe: function() {
|
||||||
|
var messageIframe;
|
||||||
|
messageIframe = function(e) {
|
||||||
|
var message, _ref;
|
||||||
|
message = ((_ref = document.querySelector('table font b')) != null ? _ref.firstChild.textContent : void 0) || '';
|
||||||
|
e.source.postMessage(message, '*');
|
||||||
|
return window.location = 'about:blank';
|
||||||
|
};
|
||||||
|
return window.addEventListener('message', messageIframe, true);
|
||||||
|
}
|
||||||
|
},
|
||||||
cb: {
|
cb: {
|
||||||
autohide: function(e) {
|
autohide: function(e) {
|
||||||
var dialog;
|
var dialog;
|
||||||
@ -958,12 +996,6 @@
|
|||||||
load: function(e) {
|
load: function(e) {
|
||||||
return e.target.contentWindow.postMessage('', '*');
|
return e.target.contentWindow.postMessage('', '*');
|
||||||
},
|
},
|
||||||
messageIframe: function(e) {
|
|
||||||
var message, _ref;
|
|
||||||
message = ((_ref = $('table font b')) != null ? _ref.firstChild.textContent : void 0) || '';
|
|
||||||
e.source.postMessage(message, '*');
|
|
||||||
return window.location = 'about:blank';
|
|
||||||
},
|
|
||||||
messageTop: function(e) {
|
messageTop: function(e) {
|
||||||
var data, dialog, error;
|
var data, dialog, error;
|
||||||
data = e.data;
|
data = e.data;
|
||||||
@ -1134,17 +1166,19 @@
|
|||||||
return qr.autohide.set();
|
return qr.autohide.set();
|
||||||
},
|
},
|
||||||
sys: function() {
|
sys: function() {
|
||||||
var board, html, id, recaptcha, thread, _, _ref, _ref2;
|
var board, c, id, recaptcha, thread, _, _ref, _ref2;
|
||||||
if (recaptcha = $('#recaptcha_response_field')) {
|
if (recaptcha = $('#recaptcha_response_field')) {
|
||||||
$.bind(recaptcha, 'keydown', Recaptcha.listener);
|
$.bind(recaptcha, 'keydown', Recaptcha.listener);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$.bind(window, 'message', qr.cb.messageIframe);
|
$.globalEval(qr.eval.messageIframe);
|
||||||
html = $('b').innerHTML;
|
c = $('b').lastChild;
|
||||||
_ref = html.match(/<!-- thread:(\d+),no:(\d+) -->/), _ = _ref[0], thread = _ref[1], id = _ref[2];
|
if (c.nodeType === 8) {
|
||||||
if (thread === '0') {
|
_ref = c.textContent.match(/thread:(\d+),no:(\d+)/), _ = _ref[0], thread = _ref[1], id = _ref[2];
|
||||||
_ref2 = $('meta', d).content.match(/4chan.org\/(\w+)\//), _ = _ref2[0], board = _ref2[1];
|
if (thread === '0') {
|
||||||
return window.location = "http://boards.4chan.org/" + board + "/res/" + id + "#watch";
|
_ref2 = $('meta', d).content.match(/4chan.org\/(\w+)\//), _ = _ref2[0], board = _ref2[1];
|
||||||
|
return window.location = "http://boards.4chan.org/" + board + "/res/" + id + "#watch";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
@ -137,6 +137,11 @@ $.extend = (object, properties) ->
|
|||||||
object
|
object
|
||||||
|
|
||||||
$.extend $,
|
$.extend $,
|
||||||
|
globalEval: (code) ->
|
||||||
|
script = $.el 'script',
|
||||||
|
textContent: "(#{code})()"
|
||||||
|
$.append d.head, script
|
||||||
|
$.remove script
|
||||||
get: (url, cb) ->
|
get: (url, cb) ->
|
||||||
r = new XMLHttpRequest()
|
r = new XMLHttpRequest()
|
||||||
r.onload = cb
|
r.onload = cb
|
||||||
@ -705,8 +710,9 @@ qr =
|
|||||||
iframe = $.el 'iframe',
|
iframe = $.el 'iframe',
|
||||||
name: 'iframe'
|
name: 'iframe'
|
||||||
$.append d.body, iframe
|
$.append d.body, iframe
|
||||||
$.bind iframe, 'load', qr.cb.load
|
$.globalEval qr.eval.load
|
||||||
$.bind window, 'message', qr.cb.messageTop
|
$.globalEval qr.eval.messageTop
|
||||||
|
$.bind window, 'message2', qr.cb.messageTop
|
||||||
|
|
||||||
#hack - nuke id so it doesn't grab focus when reloading
|
#hack - nuke id so it doesn't grab focus when reloading
|
||||||
$('#recaptcha_response_field').id = ''
|
$('#recaptcha_response_field').id = ''
|
||||||
@ -717,6 +723,23 @@ qr =
|
|||||||
unset: ->
|
unset: ->
|
||||||
$('#qr input[title=autohide]:checked')?.click()
|
$('#qr input[title=autohide]:checked')?.click()
|
||||||
|
|
||||||
|
eval:
|
||||||
|
load: ->
|
||||||
|
load = (e) -> e.target.contentWindow.postMessage '', '*'
|
||||||
|
document.querySelector('iframe[name=iframe]').addEventListener('load', load, true)
|
||||||
|
messageTop: ->
|
||||||
|
message = (e) ->
|
||||||
|
e2 = document.createEvent 'MessageEvent'
|
||||||
|
# XXX using e.source for source arg results in security error in Firefox
|
||||||
|
e2.initMessageEvent 'message2', true, true, e.data, e.origin, '', null, null
|
||||||
|
window.dispatchEvent e2
|
||||||
|
window.addEventListener 'message', message, true
|
||||||
|
messageIframe: ->
|
||||||
|
messageIframe = (e) ->
|
||||||
|
message = document.querySelector('table font b')?.firstChild.textContent or ''
|
||||||
|
e.source.postMessage message, '*'
|
||||||
|
window.location = 'about:blank'
|
||||||
|
window.addEventListener 'message', messageIframe, true
|
||||||
cb:
|
cb:
|
||||||
autohide: (e) ->
|
autohide: (e) ->
|
||||||
dialog = $ '#qr'
|
dialog = $ '#qr'
|
||||||
@ -728,11 +751,6 @@ qr =
|
|||||||
load: (e) ->
|
load: (e) ->
|
||||||
e.target.contentWindow.postMessage '', '*'
|
e.target.contentWindow.postMessage '', '*'
|
||||||
|
|
||||||
messageIframe: (e) ->
|
|
||||||
message = $('table font b')?.firstChild.textContent or ''
|
|
||||||
e.source.postMessage message, '*'
|
|
||||||
window.location = 'about:blank'
|
|
||||||
|
|
||||||
messageTop: (e) ->
|
messageTop: (e) ->
|
||||||
{data} = e
|
{data} = e
|
||||||
dialog = $ '#qr'
|
dialog = $ '#qr'
|
||||||
@ -883,13 +901,14 @@ qr =
|
|||||||
$.bind recaptcha, 'keydown', Recaptcha.listener
|
$.bind recaptcha, 'keydown', Recaptcha.listener
|
||||||
return
|
return
|
||||||
|
|
||||||
$.bind window, 'message', qr.cb.messageIframe
|
$.globalEval qr.eval.messageIframe
|
||||||
|
|
||||||
html = $('b').innerHTML
|
c = $('b').lastChild
|
||||||
[_, thread, id] = html.match(/<!-- thread:(\d+),no:(\d+) -->/)
|
if c.nodeType is 8 #comment node
|
||||||
if thread is '0'
|
[_, thread, id] = c.textContent.match(/thread:(\d+),no:(\d+)/)
|
||||||
[_, board] = $('meta', d).content.match(/4chan.org\/(\w+)\//)
|
if thread is '0'
|
||||||
window.location = "http://boards.4chan.org/#{board}/res/#{id}#watch"
|
[_, board] = $('meta', d).content.match(/4chan.org\/(\w+)\//)
|
||||||
|
window.location = "http://boards.4chan.org/#{board}/res/#{id}#watch"
|
||||||
|
|
||||||
threadHiding =
|
threadHiding =
|
||||||
init: ->
|
init: ->
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user