diff options
Diffstat (limited to 'src/scripts/common/stop-blocking.ts')
| -rw-r--r-- | src/scripts/common/stop-blocking.ts | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/scripts/common/stop-blocking.ts b/src/scripts/common/stop-blocking.ts new file mode 100644 index 0000000..3fa3de6 --- /dev/null +++ b/src/scripts/common/stop-blocking.ts @@ -0,0 +1,29 @@ +/** + * Proxies jQuery's `.bind()` (for the `"cut copy paste"` event) and + * `.keydown()` so that the website's copy/paste/right-click blocking + * is disabled. Reverts the prototypes after patching to avoid + * interfering with other code. + */ +document.addEventListener("DOMContentLoaded", () => { + const proxiedBind = $.prototype.bind; + /** Proxies jQuery `.bind()` to no-op the `"cut copy paste"` event. */ + $.prototype.bind = function() { + if (arguments[0].trim() === "cut copy paste") { + arguments[1] = (_: any) => {}; + } + + return proxiedBind.apply(this, Array.from(arguments) as any); + } + + const proxiedKeydown = $.prototype.keydown; + /** Proxies jQuery `.keydown()` so all key presses are allowed. */ + $.prototype.keydown = function() { + arguments[0] = (_: any) => true; + + return proxiedKeydown.apply(this, Array.from(arguments) as any); + } + + $.prototype.bind = proxiedBind; + $.prototype.keydown = proxiedKeydown; + document.oncontextmenu = () => true; +}); |
