1

我有一个可以在 Internet Explorer 上运行的 javascript 函数……但在 Firefox 和 google chrome 上都不起作用。

这是示例...

function CerrarFrame(src, id, tamArreglo)
{
    parent.parent.document.getElementById("workSheet").src = src;
}

现在是asp表格

<frameset rows="41, *" frameborder="0" framespacing="0" name="frmMain" id="frmMain">
    <frame name="topForm" src="Header.aspx" marginheight="0" marginwidth="0" scrolling="no" noresize>

    <frameset cols="168,*" frameborder="0" framespacing="0" id="frmBody">
        <frame name="frmMenu" id="frmMenu" src="MenuFrameNew.aspx?idUser=<%Response.Write(Session["idUser"]);%>&administrator=<%Response.Write(Session["administrator"]);%>&idCorp=<%Response.Write(Session["idCorporative"]);%>&file=<%Response.Write(Session["fileLogo"]);%>" marginheight="0" marginwidth="0" scrolling="no" noresize>

        <frameset id="frmContent" name="frmContent" rows="*,21" frameborder="0" framespacing="0">
            <frame name="workSheet" marginheight="0" marginwidth="0" src="Body.aspx" scrolling="auto">
            <frame name="btm" marginheight="0" marginwidth="0" src="footer.htm" scrolling="no">
        </frameset>
    </frameset>
</frameset>

这个 javascript 在 IE 上可以正常工作,但是当我在 FireFox 上使用它时,我得到了这个错误:

TypeError: parent.parent.document.getElementById("workSheet") is null

有没有办法解决这个问题?谢谢

4

1 回答 1

1

看来您想更改srcframe 的属性workSheet。但是,该框架没有一个,id而只有一个name. name这就是为什么它在除 IE 之外的所有浏览器中都失败的原因:IE——至少是 IE 的某些版本——在属性和属性之间没有任何区别id,这就是它返回对象的原因。您可以添加一个id到框架(如您所做的那样frmContent)或使用frames集合,例如:

parent.parent.frames["workSheet"].src = src;

那使用name. 请参阅:https ://developer.mozilla.org/en-US/docs/DOM/window.frames 。

希望能帮助到你。

于 2013-03-05T02:12:29.570 回答