document.getelementbyid无效

时间:2011-05-18 12:37:28

标签: javascript safari

我想通过使用javascript访问iframe来隐藏一些内容,所以我编写了这个javascript函数。

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

我在加载iframe时调用了该函数(onload = javascript:changecss())

一切似乎在IE中运行良好但在Safari中它不起作用。任何想法为什么它以这种方式表现以及我应该如何解决这个问题。

由于

2 个答案:

答案 0 :(得分:1)

请注意,Javascript本身的框架和位置必须位于同一个域上才能生效。如果两者都来自文件协议,Safari和IE可能会以不同的方式处理它。

对于那些不在同一个域中的人,请查看cross-domain communication with iframes和潜在的HTML 5解决方案,并使用库和&amp ;;的回退方法很好地包装。插件,例如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'; 
}

答案 1 :(得分:0)

如果iframe不在同一个域中,那么出于安全原因,不允许您这样做。