13

我查看了许多网站,但它们似乎都不能正常工作,或者我不理解它们。我想要一个简单的按钮来刷新某个 iframe。该按钮将位于父页面上,并且 iframe 名称为“Right”。

4

2 回答 2

24

有很多方法可以做到这一点。假设这个iframe标记:

<iframe name="Right" src="http://www.example.com"></iframe>

我们可以通过函数调用来做到这一点:

HTML

<button onclick="refreshIframe();">Refresh Iframe</button>

JS

function refreshIframe() {
    var ifr = document.getElementsByName('Right')[0];
    ifr.src = ifr.src;
}

或者使用内联 JS

<button onclick="var ifr=document.getElementsByName('Right')[0]; ifr.src=ifr.src;">Refresh Iframe</button>

或使用事件监听器:

HTML

<button id="iframeRefresher">Refresh Iframe</button>

JS

window.onload = function() {
    document.getElementById('iframeRefresher').addEventListener('click', function() {
        var ifr = document.getElementsByName('Right')[0];
        ifr.src = ifr.src;
    });
}

与上面相同,现在支持 IE <= 8 并使用全局范围内的函数作为处理程序而不是匿名处理程序:

HTML

<button id="iframeRefresher">Refresh Iframe</button>

JS

window.onload = function() {
    var refresherButton = document.getElementById('iframeRefresher');
    if (refresherButton.addEventListener)
        refresherButton.addEventListener('click', refreshIframe, false);
    else
        refresherButton.attachEvent('click', refreshIframe);
}

function refreshIframe() {
    var ifr = document.getElementsByName('Right')[0];
    ifr.src = ifr.src;
}

所有这一切都无需触及 jQuery 或任何其他库。

您应该使用其中的哪一个?无论您认为哪个更易于维护和可读。尽可能避免使用全局变量。我个人会避免使用带有标记的内联 JS,而且侦听器似乎是不必要的,但这只是我。选择更适合您的。

于 2012-07-02T02:27:36.150 回答
-3

id在您的 iframe 中添加新内容并尝试以下代码。

var iframe = document.getElementById('FrameId');
$("button").click(function() {
    iframe.src = iframe.src;
}):
于 2012-07-02T01:54:42.810 回答