#= require views/pages/base class app.views.JqueryPage extends app.views.BasePage @demoClassName: '_jquery-demo' afterRender: -> # Prevent jQuery Mobile's demo iframes from scrolling the page for iframe in @findAllByTag 'iframe' iframe.style.display = 'none' $.on iframe, 'load', @onIframeLoaded @runExamples() onIframeLoaded: (event) => event.target.style.display = '' $.off event.target, 'load', @onIframeLoaded return runExamples: -> for el in @findAllByClass 'entry-example' try @runExample el catch return runExample: (el) -> source = el.getElementsByClassName('syntaxhighlighter')[0] return unless source and source.innerHTML.indexOf('!doctype') isnt -1 unless iframe = el.getElementsByClassName(@constructor.demoClassName)[0] iframe = document.createElement 'iframe' iframe.className = @constructor.demoClassName iframe.width = '100%' iframe.height = 200 el.appendChild(iframe) doc = iframe.contentDocument doc.write @fixIframeSource(source.textContent) doc.close() return fixIframeSource: (source) -> source = source.replace '"/resources/', '"https://api.jquery.com/resources/' # attr(), keydown() source = source.replace '</head>', """ <style> html, body { border: 0; margin: 0; padding: 0; } body { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; } </style> <script> $.ajaxPrefilter(function(opt, opt2, xhr) { if (opt.url.indexOf('http') !== 0) { xhr.abort(); document.body.innerHTML = "<p><strong>This demo cannot run inside DevDocs.</strong></p>"; } }); </script> </head> """ source.replace /<script>/gi, '<script nonce="devdocs">'
#= require views/pages/base
class app.views.JqueryPage extends app.views.BasePage
@demoClassName: '_jquery-demo'
afterRender: ->
# Prevent jQuery Mobile's demo iframes from scrolling the page
for iframe in @findAllByTag 'iframe'
iframe.style.display = 'none'
$.on iframe, 'load', @onIframeLoaded
@runExamples()
onIframeLoaded: (event) =>
event.target.style.display = ''
$.off event.target, 'load', @onIframeLoaded
return
runExamples: ->
for el in @findAllByClass 'entry-example'
try @runExample el catch
return
runExample: (el) ->
source = el.getElementsByClassName('syntaxhighlighter')[0]
return unless source and source.innerHTML.indexOf('!doctype') isnt -1
unless iframe = el.getElementsByClassName(@constructor.demoClassName)[0]
iframe = document.createElement 'iframe'
iframe.className = @constructor.demoClassName
iframe.width = '100%'
iframe.height = 200
el.appendChild(iframe)
doc = iframe.contentDocument
doc.write @fixIframeSource(source.textContent)
doc.close()
return
fixIframeSource: (source) ->
source = source.replace '"/resources/', '"https://api.jquery.com/resources/' # attr(), keydown()
source = source.replace '</head>', """
<style>
html, body { border: 0; margin: 0; padding: 0; }
body { font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif; }
</style>
<script>
$.ajaxPrefilter(function(opt, opt2, xhr) {
if (opt.url.indexOf('http') !== 0) {
xhr.abort();
document.body.innerHTML = "<p><strong>This demo cannot run inside DevDocs.</strong></p>";
}
});
</script>
</head>
"""
source.replace /<script>/gi, '<script nonce="devdocs">'