|
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