2010-04-07 42 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瞭解有關如何實現此目的的更多詳細信息。