从容器页面控制框架

时间:2011-09-22 15:40:03

标签: javascript jquery html iframe

我有一个包含两个文本框和一个按钮的网页。我无法通过添加任何内容或更改其中的任何内容来控制此页面。

我希望(以某种方式)在页面加载时在第一个文本框中写入一些文本,而不是按下按钮。

我想将页面放在一个框架中,然后从容器页面控制它

我知道我必须使用jquery,但我需要一个解释该问题的示例或告诉我如何做我想要的事情

例如,如果我有“a.htm”文件:

“a.htm”的内容:

<iframe id="frame1" src="f.htm" />

和“f.htm”的内容是:

<input type="textbox" id="tbx1" />
<input type="textbox" id="tbx2" />
<input type="submit" id="okbtn" value="ok"/>

例如,当页面“a.htm”加载时,我希望页面“f.htm”中的文本框(例如“tbx1”)(包含在框架“frame1”中)由某些人填充文本。

提前致谢

1 个答案:

答案 0 :(得分:3)

在开始这个答案之前,值得解释一下,不能单独使用JavaScript来操作从单独域提供内容的框架* 。换句话说,如果你的网页a.htm在你的域上(例如http://yourdomain.com/a.htm),而f.htm在另一个域上(例如http://someothersite.com/f.htm),那么JS将不< / strong>能够访问iframe内的任何内容。

* 有一些技巧可以做到这一点,但根据经验,它们会带来更多麻烦而不是好事。

但是,如果它们都在同一个域中,那么您应该没有任何问题。在a.htm中,要访问iframe,您可以使用以下jQuery代码段:

$(function() {
  var iframe = $('#frame1').load(function() {
    $(this).contents().find('#tbx1').val('Text in a box!');
  });
});

因此,您的a.htm可能如下:

<html>
  <head>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
    <script type="text/javascript">
      $(function() {
        var iframe = $('#frame1').load(function() {
          $(this).contents().find('#tbx1').val('Text in a box!');
        });
      });
    </script>
  </head>
  <body>
    <iframe id="frame1" src="f.htm" />
  </body>
</html>