Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript iFrame单击“从父级监视”_Javascript_Jquery_Iframe_Dom Events_Cross Domain - Fatal编程技术网

Javascript iFrame单击“从父级监视”

Javascript iFrame单击“从父级监视”,javascript,jquery,iframe,dom-events,cross-domain,Javascript,Jquery,Iframe,Dom Events,Cross Domain,我们有一个客户,他需要我们通过iFrame在他们的站点中包含一个工具。在iFrame中,我们正在显示产品,单击“添加到购物车”链接时,需要将产品添加到父文档购物车。父域和子域不在同一个域上。不幸的是,客户端无法为我们提供一种方法来发布到购物车,我们所能做的就是调用他们的cart.add(qty,id)函数,但它在iFrame中不起作用,因为iFrame显然没有可用的函数。此外,我们不能伪造post to cart,因为我们无法访问会话id。幸运的是,我可以向他们的主页添加所需的任何Javascr

我们有一个客户,他需要我们通过iFrame在他们的站点中包含一个工具。在iFrame中,我们正在显示产品,单击“添加到购物车”链接时,需要将产品添加到父文档购物车。父域和子域不在同一个域上。不幸的是,客户端无法为我们提供一种方法来发布到购物车,我们所能做的就是调用他们的
cart.add(qty,id)
函数,但它在iFrame中不起作用,因为iFrame显然没有可用的函数。此外,我们不能伪造post to cart,因为我们无法访问会话id。幸运的是,我可以向他们的主页添加所需的任何Javascript


是否有一种方法可以让我在iFrame中侦听来自家长的单击,然后从iFrame中提取数量和产品id值,然后执行
cart.add
功能?鉴于这些限制,有没有更好的方法来实现这一点?

这是不可能的,因为这是一种安全风险,并且可以通过使用iFrame来防止。

不要使用iFrame。使用jquery.load()将整个其他站点放在一个div中。确保您的“点击”是活动的(),这样他们就可以捕捉到添加内容上的点击,这样就可以了。我不知道你加载的站点有多大。此外,使用load,您可以指定页面的一块内容,以便在不需要所有页眉信息的情况下输入so just或指定一个特定div。

我想出了一个方法。我在这里写了一篇帖子来解释:

jQuery.load()不起作用,因为它也受到同源策略的限制(如附加说明下jQuery上的API文档所述),只要包含跨域Ajax插件,就可以实际使用jQuery.load。然而,问题是另一个“站点”实际上是一个完整的Rails应用程序。当我以前尝试过这个方法时,它变成了一个巨大的痛苦,因为你需要将所有的js逻辑移到应用程序之外,然后移到主框架中。。。非常头痛。对不起。没有考虑跨领域的事情。这很难算是一个优雅的解决方案,但我不知道能有一个优雅的解决方案来解决这样一个不优雅的请求/告诉我吧,哈哈。。。我认为,如果我们让他们在工具url中添加CNAME记录,那么我们可以避免跨域问题,并通过iframe进行托管。嗨,Brad,很高兴知道你找到了答案,但现在链接已经失效。你能提供一个更新的链接吗?谢谢该死,看来我写这篇文章的公司被收购了,他们的网站和博客都被关闭了:(多亏了存档,我找到了!)!!