0

サンプルコード:

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<iframe name="iframe_a" onload="alert('Thanks for the visit!');"></iframe>
<a href="http://www.example.com/" target="iframe_a">Go!</a>
</body>
</html>

リンクをクリックした後、iframe の読み込みが完了したときにアラート メッセージが表示されるようにしたいと思います。しかし今では、最初のページ読み込みにも表示されます。IE8+で動作するようにするにはどうすればよいですか?

簡単な解決策を思いつきました:

<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<iframe id="iframe_a" name="iframe_a" onload="if(this.className=='active'){alert('Thanks for the visit!');};"></iframe>
<a href="http://www.example.com/" target="iframe_a" onclick="document.getElementById('iframe_a').className='active';">Go!</a>
</body>
</html>
4

4 に答える 4

0

これは面白いですが、必要なことを行います(純粋なJavaScriptで笑):

<!DOCTYPE html>
<html>
<head>
<title></title>
<script>
var a = 0;
function doIt() {
if(++a == 1) return;
alert('Thanks for the visit!');
}
</script>
</head>
<body>
<iframe name="iframe_a" onload="doIt()"></iframe>
<a href="http://www.example.com/" target="iframe_a">Go!</a>
</body>
</html>
于 2012-10-14T05:17:51.040 に答える
0

iframe が DOM にある場合、iframe のオンロードを防止する (まともな) 方法はありません。ロードする直前に iframe に onload を追加すると、問題が解決するはずです。

<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
</head>
<body>
<iframe id="myIframe" name="iframe_a"></iframe>
<a href="#" onclick="$('#myIframe').load(function() {alert('Thanks for the visit!');}); $('#myIframe').attr('src','http://www.example.com/')">Go!</a>
</body>
</html>
于 2012-10-14T04:24:59.410 に答える
0
<!DOCTYPE html>
<html>
    <head>
        <title>Title</title>
        <script type="text/javascript">
            window.addEvent = (function() {
                var evnt = window.addEventListener ? "addEventListener" : "attachEvent",
                    pre = evnt === "attachEvent" ? "on" : "";

                return function (ele, evnt, func, bub) {
                    ele[evnt](pre + evnt, func, bub);
                }
            }());
            addEvent(window, "load", function() {
                addEvent(document.getElementById("myIframe"), "load", function() {
                    alert("Loaded!");
                });
            });
        </script>
    </head>
    <body>
        <iframe id="myIframe" name="iframe_a"></iframe>
        <a href="..." target="iframe_a">GO!</a>
    </body>
</html>
于 2012-10-14T04:31:00.127 に答える
0

この方法を使用すると、IE 8 で動作します。

<iframe id="myIframe" name="iframe_a"></iframe>
<a href="http://www.example.com/" target="iframe_a" onclick="alert('Thanks for the visit!');">Go!</a>
于 2012-10-14T04:33:20.013 に答える