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

srcフレームの属性を変更したいようです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 に答える