可以设置一个iframe的src并在之后操纵它的内容吗?

时间:2011-03-02 02:38:27

标签: javascript html iframe

我的目标是让一个父页面将iframe的src从空白更改为其正确的url(以便在给定点使用iframe中的onload处理程序,但是在该点旁边)然后操纵iframe的内容。但是,当DOM加载时,javascript似乎忘记了iframe上没有的任何元素。有没有办法解决这个问题?

setTimeouts旨在允许加载DOM和iframe。 编辑:修复一些东西。 这是包含页面:

<html><head>
    <script type="text/javascript">
        var done = false;
        var theIframe;
        window.onload = function () {
            setTimeout('stuff()', 2000);
            clearTimeout('stuff()');
        }

        function stuff() {
            if (!done) {
                theIframe = window.myiframe;
                theIframe.src = 'http://localhost/TestStuff/redirectIframe.jsp';
                done = true;
                stuff();
            } else {
                theIframe.setMe = true;
            }
        }

      </script>
</head>
      <body>
      <iframe src="" width="500" height="500" id="myiframe" name="myiframe">

      </iframe>
      </body>

这是iframe:

<html>
  <head>
    <script type="text/javascript">
        var setMe = false;
        window.onload = setInterval('checker()', 1000);
        function checker() {
            alert('hi');
            if (setMe) {
                window.onload = null;
                top.location = 'http://www.google.com';
                alert('foundit');
            }  else alert('a');

        }

    </script>
    </head>
  <body></body>
</html>

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在这段代码中:

theIframe.src = ...;
stuff();

你正在立即调用stuff(),与你所描述的相反,所以实际上你不允许任何时间加载页面。也许你对setTimeout如何工作感到困惑:它只是在指定的时间之后安排一次执行,它不会自动延迟对函数的所有调用。

此外,您只能将clearTimeoutsetTimeout返回的先前ID一起使用,而不能使用您现在拥有的代码。

尝试这样的事情:

window.onload = function() {
  loadFrame();
}

function loadFrame() {
  theIframe = ...;
  theIframe.src = ...;
  setTimeout(setSomething, 2000);
}

function setSomething() {
  theIframe.setMe = true;
}