|
57 | 57 | }
|
58 | 58 | });
|
59 | 59 |
|
60 |
| - function on_iframe_load() { |
61 |
| - iframe.classList.add('loaded'); |
62 |
| - } |
63 | 60 | function destroy() {
|
64 |
| - iframe.removeEventListener('load', on_iframe_load); |
65 | 61 | unsub();
|
66 | 62 | if (adapter) {
|
67 | 63 | adapter.destroy();
|
68 | 64 | }
|
69 | 65 | }
|
70 | 66 |
|
71 | 67 | document.addEventListener('pagehide', destroy);
|
72 |
| - iframe.addEventListener('load', on_iframe_load); |
73 | 68 | return destroy;
|
74 | 69 | });
|
75 | 70 |
|
|
99 | 94 | adapter = _adapter;
|
100 | 95 | await _adapter.init;
|
101 | 96 |
|
102 |
| - set_iframe_src(adapter.base + path); |
| 97 | + iframe.src = adapter.base + path; |
103 | 98 | }
|
104 | 99 |
|
105 | 100 | await new Promise((fulfil, reject) => {
|
|
118 | 113 | if (!called) {
|
119 | 114 | // Updating the iframe too soon sometimes results in a blank screen,
|
120 | 115 | // so we try again after a short delay if we haven't heard back
|
121 |
| - set_iframe_src(adapter.base + path); |
| 116 | + iframe.src = adapter.base + path; |
122 | 117 | }
|
123 | 118 | }, 5000);
|
124 | 119 |
|
|
131 | 126 |
|
132 | 127 | if (reload_iframe) {
|
133 | 128 | await new Promise((fulfil) => setTimeout(fulfil, 200));
|
134 |
| - set_iframe_src(adapter.base + path); |
| 129 | + iframe.src = adapter.base + path; |
135 | 130 | }
|
136 | 131 |
|
137 | 132 | return adapter;
|
|
142 | 137 | function schedule_iframe_reload() {
|
143 | 138 | clearTimeout(reload_timeout);
|
144 | 139 | reload_timeout = setTimeout(() => {
|
145 |
| - set_iframe_src(adapter.base + path); |
| 140 | + iframe.src = adapter.base + path; |
146 | 141 | }, 1000);
|
147 | 142 | }
|
148 | 143 |
|
|
172 | 167 |
|
173 | 168 | // we lost contact, refresh the page
|
174 | 169 | loading = true;
|
175 |
| - set_iframe_src(adapter.base + path); |
| 170 | + iframe.src = adapter.base + path; |
176 | 171 | loading = false;
|
177 | 172 | }, 1000);
|
178 | 173 | } else if (e.data.type === 'ping-pause') {
|
179 | 174 | clearTimeout(timeout);
|
180 | 175 | }
|
181 | 176 | }
|
182 | 177 |
|
183 |
| - /** @param {string} src */ |
184 |
| - function set_iframe_src(src) { |
185 |
| - // removing the iframe from the document allows us to |
186 |
| - // change the src without adding a history entry, which |
187 |
| - // would make back/forward traversal very annoying |
188 |
| - const parentNode = /** @type {HTMLElement} */ (iframe.parentNode); |
189 |
| - iframe.classList.remove('loaded'); |
190 |
| - parentNode?.removeChild(iframe); |
191 |
| - iframe.src = src; |
192 |
| - parentNode?.appendChild(iframe); |
193 |
| - } |
194 |
| -
|
195 | 178 | /** @param {string} path */
|
196 | 179 | function route_to(path) {
|
197 | 180 | const url = new URL(path, adapter.base);
|
198 | 181 | path = url.pathname + url.search + url.hash;
|
199 |
| - set_iframe_src(adapter.base + path); |
| 182 | + iframe.src = adapter.base + path; |
200 | 183 | }
|
201 | 184 |
|
202 | 185 | /** @param {string | null} new_path */
|
|
234 | 217 | {path}
|
235 | 218 | {loading}
|
236 | 219 | on:refresh={() => {
|
237 |
| - set_iframe_src(adapter.base + path); |
| 220 | + iframe.src = adapter.base + path; |
238 | 221 | }}
|
239 | 222 | on:change={(e) => nav_to(e.detail.value)}
|
240 | 223 | on:back={go_bwd}
|
|
272 | 255 | border: none;
|
273 | 256 | background: var(--sk-back-2);
|
274 | 257 | }
|
275 |
| -
|
276 |
| - iframe:not(.loaded) { |
277 |
| - display: none; |
278 |
| - } |
279 | 258 | </style>
|
0 commit comments