Chciałbym uruchomić trochę javascript w kontekście okna elementu iframe. Teraz jedynym sposobem mogę myśleć, aby zrobić to wstrzyknąć tag skryptu:Kod uruchamiania w kontekście okna ramki
myIframe = document.createElement('iframe');
myIframe.setAttribute('name', 'xyz123');
document.body.appendChild(myIframe);
myIframe.contentWindow.document.write(`
<script>
console.log('The current window name is:', window.name);
</script>
`);
Uwaga: To jest iframe tej samej domeny, bez src, więc mam pełny dostęp do contentWindow
.
Dla mojego przypadku użycia ważne jest, aby kod działał z poprawnymi globaliami; window
, document
itd. Wszystkie powinny być ograniczone do samego elementu iframe.
Czy mogę to zrobić w inny sposób? Powyższe działa, ale skrypt powinien działać na różnych domenach wszystko z różnymi zasadami CSP, co oznacza dodanie wsparcia dla nonces/skrótów itp
Czy można zrobić coś takiego:
myIframe.contentWindow.run(function() {
console.log('The current window name is:' window.name);
});
I ve wypróbowany myIframe.contentWindow.setTimeout
, ale nadal wydaje się uruchomić kod w kontekście okna nadrzędnego.
Dzięki za sugestię - ale dla mojego przypadku użycia, muszę być w stanie włożyć dowolne javascript do ramki, która niekoniecznie jest hostowana w dowolnym miejscu - stąd tag skryptu. – bluepnume