2011-04-07 56 views
1

我们有一位客户,他需要我们通过iFrame在他们的网站中添加一个工具。在iFrame中,我们正在显示产品,点击“添加到购物车”链接时,它需要将产品添加到父文档购物车。父母和孩子不在同一个域中。不幸的是,客户无法向我们提供发布到购物车的方法,我们所能做的就是调用他们的cart.add(qty,id)函数,但它不能在iFrame中工作,因为iFrame显然不会在“没有可用的功能。另外,我们不能仅仅因为我们无法访问会话ID而将虚假信息伪造成购物车。幸运的是,我可以添加我需要的任何Javascript到他们的主页面。来自父母的iFrame点击监控

有没有办法让我从父母处听取iFrame中的点击,然后从iframe中提取数量和产品ID值,然后执行cart.add函数?鉴于约束条件,是否有更好的方法来处理这个问题?

回答

0
+0

嗨布拉德,很高兴知道你明白了,但现在链接已经死了。你能否提供更新的链接?谢谢! – Cogicero 2014-01-18 02:19:48

+0

该死的,它看起来像我写的职位公司被收购,他们的网站和博客被关闭:( – 2014-01-22 10:47:12

+0

感谢归档,我找到了它!https://web.archive.org/web/20130403073354/http ://blog.igodigital.com/blog/notes-on-cyber-weekend-targeted-email-campaigns/enabling-cross-domain-js-with-iframes-the-fun-way – 2014-01-22 10:50:28

0

不使用iFrame。使用jquery .load()将整个其他网站放在div中。确保你的“点击”是live(),这样他们就可以捕捉添加内容的点击,并且应该没问题。我不知道你的加载网站有多大。同样,如果你不需要所有的头文件信息,你也可以只指定页面的一部分来引入刚刚或特定的div。

+0

jQuery.load()将无法正常工作,因为它也受限于相同的原始策略(正如API文档中有关jQuery的其他注释中所述 - http:// api。 jquery.com/load/) – 2011-04-07 15:12:34

+0

只要包含跨域Ajax插件,就可以实际使用jQuery.load。但是,问题在于其他“网站”实际上是一个完整的Rails应用程序。当我之前尝试过这种方法时,它变成了一个巨大的痛苦,因为您需要将应用程序之外的所有js逻辑移动到主框架中......巨大的头痛。 – 2011-04-07 15:14:24

+0

对不起。没有考虑跨域的事情。这不是一个优雅的解决方案,但我不知道可以有一个优雅的解决方案来处理这样一个不雅的请求。 :/ – lupos 2011-04-07 15:23:14