2013-02-19 56 views
0

我已经创建了一个自动化程序,为此我需要遍历每个框架文档并设置一些输入。使用JavaScript循环使用Iframe

我用下面的函数迭代它,它工作正常,但在下面的URL它给了我拒绝访问错误。

http://usacarhire.com/

代码我使用过的每个frame和iframe进行迭代。

var i = new Array; 
var t = ''; 

var IFrameDoc; 

function GetAllFrame(a, n) 
{ 
t = ''; 

try { 

    for (i[n] = 0; i[n] < a.length; i[n]++) 

{try{ 
var oIframe = a[i[n]]; 

      IFrameDoc = oIframe.document; 

      alert(IFrameDoc.body.outerHTML); 
     } 
     catch (e) { 
      alert("Internal Error" + e.message + " - " + a[i[n]].frames.length); 
     } 

     if (a[i[n]].frames.length) t += GetAllFrame(a[i[n]].frames, n + 1); 

    } 
} 
catch (e) { 
    alert("External Error" + e.message); 
} 
return t;} 
+0

您在远程位置或您的机器上获得拒绝访问的iFrame是否? – gmaliar 2013-02-19 08:22:49

+0

是的,是的。我知道它是跨域的东西,但我不知道如何解决它? – 2013-02-19 12:10:05

+0

任何人都可以帮我吗? – 2013-02-20 13:06:38

回答

0

如果其他iFrames不是你的,那么它不能被解决,你不能覆盖交叉原点策略。 如果你拥有他们两个,你可以做的就是使用HTML5的postMessage API来在iFrame和父窗口之间进行“交谈”,但我不相信那是你想要的。 如果你这样做,留下评论,我会编辑我的答案。

+0

是的,这不是我的,但应该有一些方法来做到这一点... – 2013-02-22 10:39:08

+0

家伙,有什么办法可以从我可以得到或设置Iframe的细节? – 2013-02-28 10:47:09

+0

这一切都取决于iFrame是否与父窗口位于相同的域中。 如果没有,大多数时候它不会,因此将不可能,然后你将不得不使用HTML5 postMessage或一些其他形式,你可以看看这个似乎有用的博客帖子, http:// softwareas的.com /跨域通信与 - 内部框架 – gmaliar 2013-02-28 12:03:42