|
47 | 47 | </a> |
48 | 48 | </li> |
49 | 49 | </ul> |
50 | | - </li><li class="menu-item menu-dropdown no-mobile"> |
51 | | - <label title="Select a Backend">Backend</label> |
52 | | - <ul id="backend"> |
53 | | - <li> |
54 | | - <input type="radio" name="backend_inputs" value="core" id="backend_core" checked="true"> |
55 | | - <label for="backend_core" title="Use the core libraries backend">Core</label> |
56 | | - </li> |
57 | | - <!-- |
58 | | - <li> |
59 | | - <input type="radio" name="backend_inputs" value="thermite" id="backend_thermite"> |
60 | | - <label for="backend_thermite" title="Use the try-thermite backend">Thermite</label> |
61 | | - </li> |
62 | | - <li> |
63 | | - <input type="radio" name="backend_inputs" value="slides" id="backend_slides"> |
64 | | - <label for="backend_slides" title="Use the try-slides backend">Slides</label> |
65 | | - </li> |
66 | | - <li> |
67 | | - <input type="radio" name="backend_inputs" value="flare" id="backend_flare"> |
68 | | - <label for="backend_flare" title="Use the try-flare backend">Flare</label> |
69 | | - </li> |
70 | | - <li> |
71 | | - <input type="radio" name="backend_inputs" value="mathbox" id="backend_mathbox"> |
72 | | - <label for="backend_mathbox" title="Use the try-mathbox backend">Mathbox</label> |
73 | | - </li> |
74 | | - <li> |
75 | | - <input type="radio" name="backend_inputs" value="behaviors" id="backend_behaviors"> |
76 | | - <label for="backend_behaviors" title="Use the try-behaviors backend">Behaviors</label> |
77 | | - </li> |
78 | | - --> |
79 | | - </ul> |
80 | 50 | </li><li class="menu-item view_gist_li mobile-only"> |
81 | 51 | <a class="view_gist" target="trypurs_gist"> |
82 | 52 | <label title="Open the original gist in a new window">View Gist</label> |
|
188 | 158 | })(marker)); |
189 | 159 | } |
190 | 160 |
|
191 | | - function setupIFrame($ctr, html, js) { |
192 | | - var $iframe = $('<iframe id="output-iframe">'); |
| 161 | + function setupIFrame($ctr, data) { |
| 162 | + var $iframe = $('<iframe sandbox="allow-scripts" id="output-iframe" src="frame.html">'); |
193 | 163 |
|
194 | 164 | $ctr |
195 | 165 | .empty() |
196 | 166 | .append($iframe); |
197 | 167 |
|
198 | | - var iframe = $iframe.get(0).contentWindow.document; |
199 | | - iframe.open(); |
200 | | - iframe.write(html); |
201 | | - iframe.close(); |
202 | | - |
203 | | - var script = iframe.createElement('script'); |
204 | | - script.appendChild(iframe.createTextNode(js)); |
205 | | - |
206 | | - $iframe.ready(function() { |
207 | | - var checkExists = setInterval(function() { |
208 | | - var body = iframe.getElementsByTagName('body')[0]; |
209 | | - if (body) { |
210 | | - body.appendChild(script); |
211 | | - clearInterval(checkExists); |
212 | | - } |
213 | | - }, 100); |
214 | | - }); |
| 168 | + var tries = 0; |
| 169 | + var sendSources = setInterval(function() { |
| 170 | + // Stop after 10 seconds |
| 171 | + if (tries >= 100) { |
| 172 | + return clearInterval(sendSources); |
| 173 | + } |
| 174 | + tries++; |
| 175 | + var iframe = $iframe.get(0).contentWindow; |
| 176 | + if (iframe) { |
| 177 | + iframe.postMessage(data, "*"); |
| 178 | + } else { |
| 179 | + console.warn("Frame is not available"); |
| 180 | + } |
| 181 | + }, 100); |
| 182 | + |
| 183 | + window.addEventListener("message", function() { |
| 184 | + clearInterval(sendSources); |
| 185 | + }, { once: true }); |
215 | 186 |
|
216 | 187 | return $iframe; |
217 | 188 | } |
|
0 commit comments