|
12 | 12 | #hdr |
13 | 13 | {display:flex} |
14 | 14 |
|
| 15 | + .radio |
| 16 | + {border:1px solid lightgray;padding:2px 10px;border-radius:5px} |
| 17 | + |
15 | 18 | #hldr |
16 | 19 | {flex:1;box-sizing:border-box;position:relative} |
17 | 20 | iframe |
|
22 | 25 | </style> |
23 | 26 |
|
24 | 27 | <div id=hdr> |
| 28 | + <span id=allow-scripts class=radio> |
| 29 | + <input type=checkbox> |
| 30 | + allow-scripts |
| 31 | + </span> |
25 | 32 | <div style='flex:1'></div> |
26 | 33 | <button id=kill style='margin-right:20px'>kill</button> |
27 | 34 | </div> |
28 | 35 |
|
29 | 36 | <div id=hldr> |
30 | | - <iframe sandbox='allow-scripts allow-forms allow-popups allow-modals allow-downloads allow-pointer-lock'></iframe> |
| 37 | + <iframe sandbox='allow-scripts allow-forms allow-popups allow-modals allow-downloads allow-pointer-lock allow-same-origin'></iframe> |
31 | 38 | <div id=glass></div> |
32 | 39 | </div> |
33 | 40 |
|
|
58 | 65 |
|
59 | 66 | //vars:- |
60 | 67 |
|
| 68 | + var chk = {}; |
| 69 | + |
61 | 70 | var hldr; |
62 | 71 | var iframe; |
63 | 72 | var glass; |
|
78 | 87 |
|
79 | 88 | obj.initdom = function(rootnode){ |
80 | 89 |
|
81 | | - shadow = host.shadowRoot; |
| 90 | + shadow = host.shadowRoot; |
82 | 91 |
|
83 | | - var style = $(shadow,'style'); |
| 92 | + var style = $(shadow,'style'); |
84 | 93 | $.stylesheet.insert(style,'button','.icon'); |
85 | 94 |
|
86 | 95 |
|
87 | | - var hdr = $(shadow,'#hdr'); |
88 | | - |
89 | | - $(hdr,'#kill').onclick = btn.kill; |
| 96 | + var hdr = $(shadow,'#hdr'); |
| 97 | + chk['allow-scripts'] = $.chkbox(hdr,'#allow-scripts'); |
| 98 | + console.log(chk); |
| 99 | + $(hdr,'#kill').onclick = btn.kill; |
90 | 100 |
|
91 | 101 |
|
92 | | - hldr = $(shadow,'#hldr'); |
93 | | - iframe = $(shadow,'iframe'); |
94 | | - glass = $(shadow,'#glass'); |
| 102 | + hldr = $(shadow,'#hldr'); |
| 103 | + iframe = $(shadow,'iframe'); |
| 104 | + glass = $(shadow,'#glass'); |
95 | 105 |
|
96 | 106 |
|
97 | 107 | }//initdom |
|
137 | 147 |
|
138 | 148 | obj.srcdoc = function(html){ |
139 | 149 |
|
| 150 | + var attr = iframe.getAttribute('sandbox'); |
| 151 | + var tokens = new Set(attr.split(/\s+/).filter(Boolean)); |
| 152 | + if(chk['allow-scripts'].checked){ |
| 153 | + tokens.add('allow-scripts'); |
| 154 | + } |
| 155 | + var attr = [...tokens].join(' '); |
| 156 | + console.log(attr); |
| 157 | + iframe.setAttribute('sandbox',attr); |
| 158 | + |
140 | 159 | iframe.srcdoc = html; |
141 | 160 |
|
142 | 161 | }//srcdoc |
|
0 commit comments