forked from freeCodeCamp/devdocs
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathjquery.coffee
More file actions
57 lines (48 loc) · 1.77 KB
/
Copy pathjquery.coffee
File metadata and controls
57 lines (48 loc) · 1.77 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#= 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">'