2010-04-07 54 views
1

DOM中如何处理I帧/帧在iPhone的UIWebView

(无效)webViewDidFinishLoad:(UIWebView的*)webView的

我注入一些JavaScript来处理I帧。例如

stringByEvaluatingJavaScriptFromString: 
@"try { 
    var document = window.document.getElementsByTagName('iframe')[0].contentWindow.document.getElementsByTagName('frame'); 
    } catch (e) { 
    alert (e.message); 
    }" 

它告诉我iframes文档是未定义的。其实我试图打印iframe的contentWindow的所有属性,但它完全是空的。

我知道webViewDidFinishLoad可能会被每次帧加载调用多次。但我永远无法获得iframe文档。我认为至少应该有一次所有的iframe已经准备就绪。

有人可以告诉我如何获取iframe文件来处理uiwebview中的dom吗?

感谢

+1

经过一番测试,我发现它实际上是由javascript跨域限制引起的。注入的javascript始终在顶部窗口中,如果此顶部窗口中的iframe的src指向另一个域,则无法在此iframe中获取任何属性。 然后无法处理此iframe。有人有办法访问这个iframe吗? 谢谢 – jordan 2010-04-08 15:00:05

回答

0

你应该为了访问跨域iframe内的代码中使用的postMessage API。 请参阅here了解有关如何实现此目的的更多详细信息。