This link (archived version) describes how to inject code from a script into an iframe:
function injectJS() {
var iFrameHead = window.frames[myiframe].document.getElementsByTagName(head)[0];
var myscript = document.createElement('script');
myscript.type = 'text/javascript';
myscript.src = 'myscript.js'; // replace this with your SCRIPT
iFrameHead.appendChild(myscript);
}
That's ok, but what if I want to insert a function object into an iframe and get it executed in the iframe context? Let's say I have:
function foo () {
console.log (Look at me, executed inside an iframe!, window);
}
and I want to insert foo's code inside an iframe? (function foo could be something loaded dynamically, I can't just wrap it in quotes)
I naively tried:
var scriptFooString = <script> + foo.toString() + </script>
to get the code inside function, but
- I don't know how to insert it in the iframe HEAD (maybe with jquery?)
- I don't know if it's the right way
- I don't know what happens when if function is way more complex than that
- I don't know what happens with double and single quotes in
scriptFooString
Any hint?