I used both innerHTMl and DOM methods to add an iframe to my page.
document.getElementById('loadiframe').innerHTML ='<iframe id="frame1" src="frame.html" style="display:none"></iframe>';
If the display was equal to none. Safari refused to load frame.html. Just because it is not displayed doesn't mean it shouldn't be loaded and a full member of the DOM.
Works for me with the latest nightly build (available @ nightly.webkit.org). I remember that Anders Carlsson fixed this issue a while back, but I didn't track down the bug #.