4chan-x/src/Miscellaneous/AntiAutoplay.coffee

34 lines
1.1 KiB
CoffeeScript

AntiAutoplay =
init: ->
return if !Conf['Disable Autoplaying Sounds']
$.addClass doc, 'anti-autoplay'
@stop audio for audio in $$ 'audio[autoplay]', doc
window.addEventListener 'loadstart', ((e) => @stop e.target), true
Callbacks.Post.push
name: 'Disable Autoplaying Sounds'
cb: @node
$.ready => @process d.body
stop: (audio) ->
return unless audio.autoplay
audio.pause()
audio.autoplay = false
return if audio.controls
audio.controls = true
$.addClass audio, 'controls-added'
node: ->
AntiAutoplay.process @nodes.comment
process: (root) ->
for iframe in $$ 'iframe[src*="youtube"][src*="autoplay=1"]', root
AntiAutoplay.processVideo iframe, 'src'
for object in $$ 'object[data*="youtube"][data*="autoplay=1"]', root
AntiAutoplay.processVideo object, 'data'
return
processVideo: (el, attr) ->
el[attr] = el[attr].replace(/\?autoplay=1&?/, '?').replace('&autoplay=1', '')
el.style.display = 'block' if window.getComputedStyle(el).display is 'none'
$.addClass el, 'autoplay-removed'