2011-05-18 129 views
2

我想通過訪問使用JavaScript的iframe來隱藏一些東西,所以我寫了這個javascript函數。document.getelementbyid不工作

function changeCSS(){ 
frame = document.getElementById('frame1'); 
frame.contentWindow.document.getElementById('GlobalTitleAreaImage').style.display='none'; 
} 

我然後調用的函數,當我加載IFRAME(的onload = JavaScript的:changecss())

一切似乎都在IE瀏覽器工作正常,但在Safari但這並沒有工作。任何想法,爲什麼它是這樣的行爲,以及我應該如何解決這個問題。

感謝

+2

你可以發佈一些標記嗎? – 2011-05-18 12:38:45

+0

沒有看到它很難知道什麼可能發生的HTML – mcgrailm 2011-05-18 12:39:36

+2

做這兩個文件(父母和iframe)屬於同一個域? – 2011-05-18 12:39:50

回答

1

注意這兩個框架和JavaScript本身的位置必須在這個工作相同的域。如果兩者都來自文件協議,則Safari和IE可能會以不同的方式處理它。

對於那些不屬於同一個域中的外觀進cross-domain communication with iframes和電位HTML 5溶液,通過庫與回退的方法很好地包裹&插件,如portholexssinterfaceeasyxdm,以及其他。

雖然Safari被列爲支持內容窗口,但Chrome不支持。對於跨瀏覽器兼容性,請使用contentWindow和contentDocument的組合以確保您擊中受支持的屬性。因此,請嘗試:

function changeCSS(){ 
    var frame = document.getElementById('frame1'); 
    var content = frame.contentWindow || frame.contentDocument; 
    content.document.getElementById('GlobalTitleAreaImage').style.display='none'; 
} 
+0

感謝您的幫助 – jo88 2011-05-18 12:53:36

0

如果iframe不在同一個域中,那麼出於安全原因您不允許這樣做。

+0

它雖然在IE中工作。有沒有解決方法 – jo88 2011-05-18 12:44:32

+0

你有鏈接到有問題的網站嗎? – ADW 2011-05-18 12:51:01

相關問題