Just a thought, but would using an IFRAME
over a DIV
essentially make that element isolated from the window in a way that slow scripts running in the IFRAME
wouldn't affect the other frames/window?

- 4,172
- 4
- 45
- 62
2 Answers
Yes for the first part, an iframe will "sort-of" isolate your window from the script in the iframe. However, the parent window can still be accessed via window.parent
.
For the second part: No, it will not make it so slow scripts in the iframe won't affect other frames/windows. Your main window object and its child nodes all run in the same thread. JavaScript is single threaded [Ignore webworkers in this case, you can't pass dom elements between them anyway], so the only reason you can access the parent-window/child-iframe's window object is because they're on the same thread.
To provide a quick example:
- Create a page called main.html
- In that page, have an iframe
src="iframe.html"
- Next to the iframe, have a button with whatever text you want, I don't care.
- In iframe.html,
window.onload = function(){ while(1){} };
- Access iframe.html. You'll notice that when you put your mouse cursor over the button, it doesn't respond/redraw. This is because the browser is frozen.
Source:
I tried getting multithreading like this too. Learned the hard way =)
-
Haha great answer, thanks a lot. Saved me me going down a dead end. – Louis Apr 20 '10 at 06:42
-
5correct answer, one small remark though; "However, the parent window can still be accessed via window.parent" is only correct if both parent and child (iframe) are on same domain. if they are not, you indeed could consider the iframe a sandboxed environment due to the "same origin policy". – futtta Apr 20 '10 at 11:46
In new browsers you can use the sandbox property to isolate the iframe from the rest of the page

- 731
- 2
- 8
- 16