我想实现这样一个效果,就是在自己编写的页面中的textbox字符,而这个字符自动显示在百度主页搜索框里。(请别问我为什么,也不是想搜索,只是要研究一下自己页面和其它页面间的同步信息交互。)
  于是自己做一个包含了左右2个框架的页面,左面的leftframe是自己的页面,很简单的一个输入框textbox;右面框架rightframe里引向http://www.baidu.com。
  事先看了一下百度该页的源文件,发现其form名为f,搜索框名为wd,于是象如下这样编写:
  
  框架文件1.html:
  <html>
  <head>
  <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  <title>框架间的信息交互</title>
  </head>
  <!--把框架分割成左右二个部分-->
  <frameset cols="13%,87%">
  <frame name="leftframe" src="2.html" >
  <frame name="rightframe" src="http://www.baidu.com" >
  </frameset><noframes></noframes>
  </html>  左框架文件2.html:
  <html>
  <head></head>
  <body>
  <!--加入一个表单用来输入信息-->
  <form name="message">
  请输入:<br />
  <!--供输入的文本框,用onKeyUp事件来调用函数showme()-->
  <input type="text" name="mytbx" value="" size="10" onKeyUp="showme()" /><br />
  </form>
  <!--此处放入脚本程序-->
  <script language="javascript">
  function showme(){
  //把本框窗中在文本框中输入的值写入百度的f的文本框wd中
  parent.rightframe.document.f.wd.value=message.mytbx.value;}
  </script>
  </body>
  </html>  最后结果却是不行,在状态栏左下角所显示的错误提示里说我的左页面(http://127.0.0.1/test/2.html)拒绝访问。
  而我自己再做一个rightframe的页面,只有一个textbox,进行测试却一切正常;另外,我将百度页保存在本机上html再进行测试也可以。
  请大家帮忙一下看看,究竟是怎么回事呀?对于javascript又不执行回传,只是用来实现客户端上的同步显示数据,为什么就不行呢?如何解决呀,谢谢大家。

解决方案 »

  1.   

    js调用iframe的对象,只限于同域名,如果跨域访问出于安全考虑,各个浏览器都是不允许的,如果要实现你所要的功能可,可以通过下面的方式:
    通过查看百度搜索页面的HTML代码,获得表单提交到的url(即action的值)以及需要提交的相关参数,例如提交到/s,参数有key、lang等等,那么在自己的页面中可以这样:
    <script>
      function go(){
         var key=document.getElementById("key").value;
         document.getElementById("i").src="/s?key="+key;
      }
    </script>
    <input type="text" id="key"/><input type="button" value="search" onclick="go()">
    <iframe id="i" src="about:blank"></iframe>
      

  2.   

    多谢楼上,领会了一些东西。不过我想要的功能就是来实现本地javascript功能用来在其它外页面的可输入区域写入内容,而不是来实现那个页面的功能(比如搜索)。说白了就是想这样:朋友的公司有网站,BOSS要求他们将上万条各种文件上传,用账号登录上去后,有 1个资料名称textbox框、1个关键字textbox框、1个文件大小textbox框、一个提交文件域filefield、一个内容简介的multi-textbox框。说这网站可恶是因为,这几个表单间竟设计成无任何关联,比如本可以根据文件域的内容来自动生成其它输入框的内容做参考的,至于文件大小的框更是可笑,传上去自然就知道了嘛,唉……这下可苦了朋友:先点文件域的浏览按钮找到要上传的文件-->再在资料名称栏写上文件名称(还好,还会用个copy  paste)-->再写上关键字(也就是再把文件名粘贴一次,有选择地加几个空格)-->回头找到该文件记个大小写在文件大小框-->再打开文件选出头几行的文字复制粘贴回内容简介框。上万条文件呀,这种操作……所以我想到这个办法,自己写一个页面来实现他原来那个没有实现人性化功能的部分:先在listbox里读出所有本地指定目录的文件(要上传的文件),用javascript来实现点上哪个文件名,就在右方框架那个该死的网站里相应位置自动填写(至于文件域,因为只读,没办法,手动吧),至少这样可以减轻不少工作量呀(就是点几下,至于不太合适的小细节,以后在管理页面里也好修改呀)。大家有什么好办法么?多谢大家了!(顺便BS那儿的BOSS,尤其BS那个只顾功能不顾人性的程序员)。