多次更改iframe源

时间:2014-10-25 10:39:48

标签: javascript iframe src

我制作了一个iFrame,并希望在它加载到10个不同来源中的下一个时更改它的来源:

看起来像这样:

iframe loaded =>更改为example.com => iframe loaded =>更改为example1.com => iframe loaded =>更改为example2.com ...

有没有办法做到这一点? ... 我已经尝试了很多东西并坚持这样的事情:(当然根本不起作用)

<html>
<body>
<iframe onload="srca('http://www.com', 'a')" src="http://www.example.com"> </iframe>
<script>
function srca (src, load){

document.getElementsByTagName('iframe')[0].src = src
alert(document.getElementsByTagName('iframe')[0].src)
document.getElementsByTagName('iframe')[0].onload = load 
}

function a(){
srca('http://js.do', 'b')
}
</script>
</body>
</html>

谢谢!

1 个答案:

答案 0 :(得分:1)

我解决了这样的问题: working jsfiddle here.

javascript部分如下:

urls = ['http://www.example.com', 'http://www.com', 'http://js.do'];
position = 0;
element = document.getElementsByTagName('iframe')[0];
element.onload = frameLoaded;
next();  /* i.e. load the first */

function next() {
    if (urls.length > position) {
        element.src = urls[position];
        position += 1;
    }
}

function frameLoaded() {
    setTimeout(next, 4000);
}

我得到your code working.问题是:

  • 难以阅读:-P
  • 当你想要传递一个命名函数时,使用它的名字,而不是它的字符串,即:
    • blabla.onload = a
    • blabla.onload = 'a'错了
  • 在脚本之前触发的onload事件,即您调用的函数尚未定义
    • 这是一个常见问题
    • 我通过将脚本部分放在<iframe>
    • 之前修复了它
    • 我的解决方案的代码应该由body.onload执行(jsfiddle就是这样)