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