<iframe src="http://www.baidu.com">
<input type="text" id="search" />
<input type="button" id="baiduyixia" value="百度一下" />希望达到的效果 在 search 这个文本框中输入字符的同时 iframe 中的网页(baidu) 中的的文本框中的内容也会随着变化
输入完成后 点击 baiduyixia 这个按钮,相当于点击 iframe 中的 百度一下 的按钮,最后 iframe 中显示结果所有的操作都需要在我的页面中操作,操作我的页面中的控件相当于操作 iframe 中 百度 页面中的控件。只要达到效果就可以,可以不使用js,只要是我能看懂就OK!只要是提供给我思路可以让我做出来的,绝对给分!如果不方便回答的,可以QQ上给我留言53030734,希望大家可以帮帮我。

解决方案 »

  1.   

    我自己先顶一下,怕大家看不到,这个跨域的情况: iframe 外面的页面是我开发的,iframe 中指向的页面是别人的。
    网上有个js脚本注入的,我看不明白,希望高手可以指点一下。比较着急,先谢谢回帖的大哥大姐们了!
      

  2.   

    一个页面中有多个iframe, 其实页面中JS代码多个iframe 是可以共用的,在search 这个文本框中输入字符的同时,可能不会做到在iframe 也随着变化,但可以在button事件再做这样的处理。这是个人的思路,有待一起学习提高。
      

  3.   

    通过search中数据,通过webrequest实现提交表单,获取页面数据
    参考
      

  4.   

    这个web程序可以实现?关注...
      

  5.   

    web程序绝对可以实现,应该是普通的html 或者 hta 就可以达到效果。希望大家多多关注,谢谢!
      

  6.   

    Javascript基于安全考虑是不允许跨域操作的最近在做地图应用功能的时候,需要从页面外部调用JS的方法,一般都是通过iframe调用地图引擎的.主页面和Frame页面不在一个域里面,解决办法有几种。设置domain,两个文件设置成同一个domain(适合在子域不同时使用)包含地图的页面document.domain="china186.com";地图引擎本身,document.domain="china186.com";
      

  7.   


    由于现在跟其他站点合作,遇到跨域问题,在JQuery中的$.get有一个彩蛋可以使用
    服务器A(192.168.0.102):test.jsp
    1<%@ page contentType="text/html; charset=GBK" %>
    2<%request.setCharacterEncoding("GBK");%>
    3var cardNames = new Array('hh', 'unser');
    4var cardMails = new Array('[email protected]', '[email protected]');服务器B(192.168.0.101):test.htm
     1<HTML>
     2<HEAD>
     3<script language="JavaScript" src="/common/js/jquery-1.2.1.pack.js"></script>
     4
     5</HEAD>
     6<BODY>
     7<SCRIPT>
     8$.get("http://192.168.0.102/test.jsp",
     9    { names: "c" }, 
    10    function(data){ 
    11        alert("Data Loaded: " + cardNames);
    12        
    13        for (i=0;i<cardNames.length;i++)
    14        {
    15            alert(cardNames[i]);
    16        }
    17    },
    18    "script"
    19);
    20</SCRIPT>
    21</BODY>
    22</HTML>
      -------------------------------------------------------------------------------------------------------------------------------ajax应用的越来越广泛。以前我一直使用jquery的.post,和.get来做 
      ajax操作,很方便。但是.post和.get是不支持跨域操作的,例如: 
      在a.com通过他们调用b.com,会返回uri denied。今天要实现一个feature 
      要ajax跨域操作,就研究了一下。 
       
      jquery从1.2开始,.getJSON就支持跨域操作了。这个是官方给出的例子。 
      http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback 
       
      $.getJSON("http://api.flickr.com/services/feeds/photos_public.gne? 
      tags=cat&tagmode=any&format=json&jsoncallback=?", 
       function(data){ 
       $.each(data.items, function(i,item){ 
       $("<img/>").attr("src", item.media.m).appendTo("#images"); 
       if ( i == 3 ) return false; 
       }); 
       
      }); 
       
      这里的jsoncallback是一个jsonp的callback。不指定就是用?,jquery会自动 
      把?替代。这个大家可能还不太理解,一会就明白了。 
       
      我用django做web开发的framework。那么提供json数据的view func应该如何写呢? 
       
      def api(request, id): 
       try: 
       info = Info.objects.get(id=id) 
       
       data = { 
       'name':info.name, 
       'gendar':info.gendar, 
       } 
       except: 
       status = {} 
       
       callback = request.GET['callback'] 
       
       return HttpResponse('%s(%s)' % (callback, 
      simplejson.dumps(status))) 
       
      这里的callback就是一个jsonp的func名字,通常是jsonp1214803701549这样的串。 
      HttpResponse的返回值一定是jsonp1214803701549({'name':xxx, 'gendar':xxxx})。 
      因为这样才能回调到你的客户端的function。这个浪费了我不少时间。 
       
      html客户端代码就更简单。 
       
      $.getJSON("http://xxx.com?callback=?", 
       function(data){ 
       alert(data.name); 
       } 
       
      }); 
       
      到此,ajax的跨域操作就完成了。网上关于这方面的资料不多,而且都不详细。上面是我用firebug跟踪HttpResponse,HttpRequest的参数的总结的。可能有理解不当,或者有更好的方法,欢迎大家一起交流 -------------------------------------------------------------------------------------------------------------------------------------------- 基于jquery的ajax之跨域解决方案今天突然发现原来ajax无法跨域,网上主流的解决方法兜了一圈都十分的无爱,apache rewrite即使我自己的apache能够实现也无法保证以后提供商给你这么好的服务,iframe法:多出来一个这么大个东东总不是滋味。代理:速度受到影响还看到包括modello,squid等办法,个人推荐modello的办法,通过google可以搜到相关教程,使用起来非常方便,经本人测试支持ie6,ie7,firefox,不过有一个缺点就是速度慢了半拍,执行geturl以后要等10s左右才给反映,有可能是提取的页面大了的原因,具体也没有进一步的测试,最后自己决定自己给自己写一个中转页面 例子是一个从九天网播放页动态提取mp3地址进行播放,当按下按钮,通过jquery的ajax传递一个播放页面url地址给后台test.php ,后台返回页面的内容串给js,然后正则加工提取地址交给前台播放器,加工部分当然也可以在后台页交给php完成(当然这不是本文重点)。
      

  8.   


    JQuery 这个我从来没有了解及使用过,希望可以针对我贴出的代码,是一个小小的示例,由于对技术的不了解,我自主钻研很耗时啊。
      

  9.   

    Json的跨域不是楼主需要的吧,Json的跨域好像需要服务端生成一个约定好的脚本,事实上客户端是通过生成<script src="跨域地址"></script>对象来完成。这样的结果就是生成的脚本可以调用当前页面的方法,当然包括生成的callback了。但是如果跨域地址的内容不是自己的并且也没有和自己约定好就不行了吧。
      

  10.   

    各位大哥大姐:我在重申一下:
    这个跨域的情况: iframe 外面的页面是我开发的,iframe 中指向的页面是别人的。 
    网上有很多方法,但都需要两个页面的开发者为一个人希望高手们可以指点一下,我星期六才能回去,应该星期六了才能详细了解大家提供的方案。
    郑重声明:绝对结贴!
      

  11.   

    跨域问题不需要提问,谁斗殴解决不了
    你这个问题根本没有涉及跨域<iframe id="frm1" src="http://www.baidu.com">
    <input type="text" id="search" />
    <input type="button" id="baiduyixia" value="百度一下" onclick="frm1.src='http://www.baidu.com/s?wd='+escape(search.value);" /> 
      

  12.   

    21 楼的办法,貌似需要服务器端支持。楼主要实现的功能,肯定是 baidu 不可能提供支持的。以前用过跨域,但是没有成功!期待高手……20楼的方法貌似在这里也无可用之处。
      

  13.   

    改变下思路,把百度的首页COPY下来放在自己页面中,点提交的时候再真正的提交数据
      

  14.   

    您了解我的意思了,目前最要命的就是 frame 里的页面所在的服务器我一点也无法操作,只能从自己这里单方面进行跨域。
      

  15.   

    表面上看设置document.domain可以实现, 但是顶级域名不同, 是不能设置成功的吧.. 设置的时候出错"参数无效"
    最近也有修改其他域的DOM的问题, 关注中...
      

  16.   

    document.domain 需要两个域的开发者是同一个人,我这个情况可不是呀
      

  17.   


    不能通过数据提交的方法。我已经说过了。onclick必须="function"
      

  18.   

    这个方法可以实现,不过数度会慢,是否可以做个假的
    思路,
    比如说,它是在点按钮之后才查出来数据的,也就是说在没点的时候只要能上下文本框同步字符就行
    那就在百的上面一部分也就是输入文本框用一个div盖上,div里放一个输入框
    这样就好控制了,
    当点按钮的时候就用提交的方法就可以了,
    我想这种方法虽说是假的,不过可实现你说的功能,我之前也用这种方法做过一个天气预报就是取到一个网站的一部分然后用div
    把其它的部分盖上不显示,道理是一样的
      

  19.   

    跨域调数据并不是什么问题, 但是关键问题是..
    是要跨顶级域操作DOM..
      

  20.   

    LZ可以考虑其他变通的方法, 用框架来容纳另一个页面, 当然那个页面不能是baidu的.
    想要直接修改baidu的页面, bd是铁定不会授权给你了 -- 你又无法通过修改domain来欺骗它.
      

  21.   

    iframe中src的指向不一定是百度,也有可能是其他的页面.但都是别人的网站页面,不会给我授权,我也不能做任何修改操作....
      

  22.   

    Javascript是不可能实现的. 
      

  23.   

    onclike=oIframe.src="http://www.baidu.com/s?wd=" + search.text;
      

  24.   

    改成,按钮baiduyixia的事件:onclick="javascript:oIframe.src='http://www.baidu.com/s?wd=' + search.value";
      

  25.   

    用一个IE专有的对象,可实现JS对象的跨域传递.
      

  26.   

    http://hi.baidu.com/langchao826/blog/item/b5947b4f79a89e3eaec3ab35.html
      

  27.   

    感觉跟sso就是一个原理啊。希望能给你启发!!!
      

  28.   

    跨域,首先要受到浏览器的安全级别限制,默认情况下是不允许的。在浏览打开这个选项以后,就可以利用传统的DOM来操作啦。如果是同一个网站的不同页面,就不是所谓的跨域,当然用DOM直接来操作就可以了。试想想,如果没有一套跨域的限制,你是不是很容易搞点什么活动。
      

  29.   

    用自己的域名隐藏跳转行不行,我看了资料说JS跨域问题并没有去判断IP,而只是域名的判断,如果仿造域名或者欺骗的话就应该可以,我在想如果自己的域名跳转对应的页面会不会有影响,不过应该局限性比较大,第二种思路,我想可不可以自己建立一个页面,读取出对应页面的数据,在操作,呵呵这个是乱想的。C++就好实现 的多了。
    /跨域获取
    // Converts a IHTMLWindow2 object to a IWebBrowser2. Returns NULL in case of failure.
    CComQIPtr<IWebBrowser2> HtmlWindowToHtmlWebBrowser(CComQIPtr<IHTMLWindow2> spWindow)
    {
    ATLASSERT(spWindow != NULL); CComQIPtr<IServiceProvider>   spServiceProvider = spWindow;
    if (spServiceProvider == NULL)
    {
    return CComQIPtr<IWebBrowser2>();
    } CComQIPtr<IWebBrowser2> spWebBrws;
    HRESULT hRes = spServiceProvider->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void**)&spWebBrws);
    if (hRes != S_OK)
    {
    return CComQIPtr<IWebBrowser2>();
    } return spWebBrws;
    }// Converts a IHTMLWindow2 object to a IHTMLDocument2. Returns NULL in case of failure.
    // It takes into account accessing the DOM across frames loaded from different domains.
    CComQIPtr<IHTMLDocument2> HtmlWindowToHtmlDocument(CComQIPtr<IHTMLWindow2> spWindow)
    {
    ATLASSERT(spWindow != NULL); CComQIPtr<IHTMLDocument2> spDocument;
    HRESULT hRes = spWindow->get_document(&spDocument); if ((S_OK == hRes) && (spDocument != NULL))
    {
    return spDocument;
    } CComQIPtr<IWebBrowser2>   spBrws = HtmlWindowToHtmlWebBrowser(spWindow);
    if (spBrws == NULL)
    {
    return CComQIPtr<IHTMLDocument2>();
    } // Get the document object from the IWebBrowser2 object.
    CComQIPtr<IDispatch> spDisp;
    hRes = spBrws->get_Document(&spDisp);
    spDocument = spDisp; return spDocument;
    }
    //跨域获取
    下面是一段C++的跨域代码。
      

  30.   

    我也遇到了差不多的问题 关注ing
      

  31.   

    跨域js操作与跨域取数据一样有安全问题,浏览器会检测你页面与iframe页面的domain,protocol,port,如果其中任何一项不一致浏览器都会拒绝你的js操作,我照你说的做了个测试页面,在Chrome下测试就是这样一个结果,当iframe加载好后我用jquery取iframe中的dom,Chrome的console里给出了这样的错误提示:
    2Unsafe JavaScript attempt to access frame with URL http://www.baidu.com/ from frame with URL file:///C:/Documents%20and%20Settings/Administrator/My%20Documents/Downloads/ajaxfileupload1.0/teset.html. Domains, protocols and ports must match.
    总之 跨域就有安全问题,跨域操作应该获取别人的授权才能进行,否则只有用脚本注入攻击(xxs),这就属于黑客技术了,如果你只是想做正常的应用,这个好像也不太合适。
    放弃吧-。-当浏览器解决了跨域安全问题以后你的应用就可以开始做了。。