在PHP页面中使用Uframe(或其他)加载外部网站并触发DOM元素上的click事件?

时间:2013-04-21 11:02:57

标签: jquery triggers cross-domain uframe

首先,我知道这个问题可能听起来相当复杂,但我希望不是那么多。

我的目标如下:

我有一个页面 mypage.php ,我有一个按钮(其ID为按钮,它只是使用css绘制的div样式)在这个页面中。当我点击这个按钮时,我想:

1)加载外部网站

的内容

2)一旦网站完全加载:

  • a)在此页面中填写一个文本字段,其中包含一些内容(例如,假设此页面的输入字段,ID为 my_field 我希望此文本字段包含文本 mytext
  • b)触发“点击”(或“mousedown”)事件按钮(使用css样式绘制的div)。假设此按钮的ID为: external_button
  • c)终于重新加载外部网站“独立”。我的意思是:我希望mypage.php“消失”并“移动”到另一个网站,因为我点击了一个链接到该网站的网址

请注意,最后一点是针对我可选:唯一重要的是用户可以使用已加载的网站,因为他们将其地址写入浏览器的网址地址栏

mypage.PHP 的结构:

<html>
   <body>
      <div class="mybutton" id="mybutton"> </div> <br/>
      <div id="content"></div>
  </body>
</html>

外部网站的结构:

 <html>
    <head> <!-- SOMETHING..including styles,javascript,title,metatags etc. --> </head>
      <body>
          <input type="text" id="my_field" value="" /><br/>
          <div class="external_button" id="external_button"> </div>
      </body>
 </html>

我搜索了互联网并发现了这种可能的解决方案(但我不知道如何“合并”也不使用它们): 1)使用 uframe 加载外部网站。 首先,我不明白我是否可以使用 PHP 或仅使用ASPX。然后我不明白它是如何工作的。

a + b)完成文本字段并触发事件:使用 jquery 。我尝试使用Chrome Dev Tools尝试(直接在我的浏览器中加载网站),但显然它不起作用。

$("#external_button").trigger("mousedown")

c)我想这可以使用标题 php函数(或使用 javascript:reload )来完成

任何建议都非常感谢。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

Chrome和FF遵循同源策略,以保护最终用户免受跨脚本攻击。

因此,您无法在页面中包含的IFrame或Div中加载外部网站,除非加载页面的目标网站允许在IFrame中加载页面。

如果您拥有目标网站的来源,以下关于SO的查询应该提供一个指针,说明如何在DIV中加载外部网页

Overcoming “Display forbidden by X-Frame-Options”

但是,您尝试解决的问题可以按照以下方式完成:

将外部网页加载到DIV中,并提供一个回调函数,该函数在加载完成时将起作用,如下所示。以下代码必须放在myPage.php的JS文件中:

    //define the call back function that will trigger when the target page loads
    var loadedFunction = function() {
                    alert("Target web page completed loading");
                                            //txtSampleTarget is the name of the text box to be populated.
                    $("#my_field").val("Finished loading");
                                           //perform more javascript actions here.
                                           $("#external_button").trigger('click');

                }
    $(document).ready(function() {
                    $("#loadButton").click(function(event) {
                          $("#contentDiv").load(url, loadCompleteCallback);

                    });
                });

希望这会有所帮助......