I'm using the following localStorage extension:
importScripts('https://cdnjs.cloudflare.com/ajax/libs/localforage/1.7.3/localforage.min.js')
class LocalStorage {
constructor () {}
getInfo () {
return {I'm using the following localStorage extension:
importScripts('https://cdnjs.cloudflare.com/ajax/libs/localforage/1.7.3/localforage.min.js')
class LocalStorage {
constructor () {}
getInfo () {
return {| .leopard__project { | |
| /* Centre the project on the screen */ | |
| position: fixed; | |
| top: 0; | |
| left: 0; | |
| right: 0; | |
| bottom: 0; | |
| margin: auto; | |
| /* Set the width the entire width | |
| of the screen, and set the height |
| <!DOCTYPE html> | |
| <html lang="en"> | |
| <head> | |
| <meta charset="UTF-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1" /> | |
| <title>If you see this, I haven't bothered setting a website title.</title> | |
| <meta name="description" content="If you see this, I haven't bothered writing a description." /> | |
| <link rel="stylesheet" type="text/css" href="/sheep3.css"> |
| ``` @everyone <@355534246439419904> ``` | |
| `` @everyone <@355534246439419904> `` | |
| ` @everyone <@355534246439419904> ` |
| document.querySelector('.dropdown-wrapper').classList.add('open') | |
| document.querySelector('.dropdown-wrapper').classList.remove('disabled') | |
| for (const tr of document.querySelectorAll('[id^="discussion-user-filter-"]')) { | |
| const name = tr.querySelector('.user-stats-name') | |
| const a = Object.assign(document.createElement('a'), { | |
| href: `/user/${tr.id.replace('discussion-user-filter-', '')}/info` | |
| }) | |
| a.style.fontWeight = 'normal' | |
| name.replaceWith(a) | |
| a.append(name) |
| 🐑 |
| const ArgumentType = require('../../extension-support/argument-type') | |
| const BlockType = require('../../extension-support/block-type') | |
| class LocalStorage { | |
| constructor () {} | |
| getInfo () { | |
| return { | |
| id: 'localstorage', | |
| name: 'LocalStorage', |
| export async function * on (target, ...events) { | |
| const nextPromises = [] | |
| let onFire | |
| function addNextPromise () { | |
| addNextPromise.push(new Promise(resolve => (onFire = resolve))) | |
| } | |
| addNextPromise() | |
| function listener (event) { |
| class Fetch { | |
| constructor () {} | |
| getInfo () { | |
| return { | |
| id: 'fetch', | |
| name: 'Fetch', | |
| blocks: [ |
Edpuzzle aggressively reverts the playbackRate of a <video> element, so you can't simply change it to increase the speed. Thus, a more aggressive response is necessary to combat it.
Firstly, we get the <video> element:
video = document.querySelector('video')Then, we get the setter function for the playbackRate property using Object.getOwnPropertyDescriptor(HTMLMediaElement.prototype, 'playbackRate').set. It is called with the <video> element as this and with speed as the new value. This way, the <video> element is properly notified of the speed change by simulating assigning a value to playBackRate directly (ie using =).