Javascript:如何重新加载整个框架集 onload() 事件,包括调用 Javascript 的框架

ksu*_*lta 2 javascript

有没有办法使用 Javascript onload() 事件重新加载整个框架集?

function logout() {
    /* ... */
    // reload entire frame
    top.location.reload();
}

<body onload="logout()">
Run Code Online (Sandbox Code Playgroud)

这会导致所有框架重新加载,但调用此框架的 URL 并未更改为框架集中指定的 URL。

Tom*_*lak 5

据我了解,您希望使用 <frame src="..."> 中所述的原始 URL 重新加载框架集中的每个框架。

这个小函数可以做到这一点(将其放入保存框架集的文档中):

this.reloadChildFrames = function()
{
    var allFrames = document.getElementsByTagName("frame");
    for (var i = 0; i < allFrames.length; i++)
    {
        var f = allFrames[i];
        f.contentDocument.location = f.src;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以从任何子框架内调用该函数:

top.reloadChildFrames()
Run Code Online (Sandbox Code Playgroud)

当然,这只有在所有帧都来自同一来源时才有效。