34 lines
1.1 KiB
CoffeeScript
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'
|