繁体   English   中英

将Onload事件挂钩到iframe

[英]Hook Onload event to Iframe

将两个onload事件关联到iframe并在不同的onload尝试中发生的JavaScript代码是什么?

我希望第一个onload除了重定向的下一个onload外什么都不做。 这可能吗?

新答案

重新阅读您的问题后,我意识到您希望这些函数在单独的事件上触发。 这很容易实现:

var ifr = document.getElementById('daiframe');

ifr.onload = function(){
    ifr.onload = function(){
        // do the redirect here
    };
};


ifr.src = 'http://initial.url/';

这里最重要的是,像我一样,在iframe获取初始URL之前,将onload代码设置为上方。 假设您是直接编写iframe HTML代码,请确保SRC属性指向about:blank

编辑: 从评论中给出的信息和我之前的警告...

假设PHP部分如下所示:

$code = '<iframe src="http://some.url/"></iframe>';
echo $code;

该代码需要更改为:

$code = '<iframe src="http://some.url/"></iframe>';
echo str_replace('<iframe ', '<iframe onload="ifrLoaded();" ', $code);

?><script type="text/javascript">
    var alreadyLoaded = false;
    function ifrLoaded(){
        if(alreadyLoaded){
            // do your redirect
        }else{
            alreadyLoaded = true;
        }
    }
</script>

旧答案

像这样吗

function appendEvent(el, name, fn){
    if(typeof el[name] == 'function'){
        var oldfn = el[name];
        el[name] = function(){
            oldfn.apply(this, arguments);
            fn.apply(this, arguments);
        };
    }else{
        el[name] = fn;
    }
}


var ifr = document.getElementById('daiframe');

appendEvent(ifr, 'onload', function(){});
appendEvent(ifr, 'onload', function(){ /* do the redirect */ });

ifr.src = 'http://target.url/'; // since onload fires only after the URL is set

工作中的JSFiddle ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM