2

我有一个需要提交到 iframe 的表单。它在 Windows 和一些旧版本的 Mac OS 中完美运行。但它不适用于较新的版本。我已经用 Mac OS X Mountain Lion 10.8.3 对其进行了测试,但它不起作用。我的用户在不同的 OS X 版本上报告了同样的问题。

这是代码:

    <form action="https://nidieunimaitre.spreadshirt.com/shop/basket/addtobasket" style="padding: 0px;" method="post" target="formiframe" name="tshirt_form" id="tshirt_form">

    <input type="hidden" name="product" id="productId" value="17695932"/>
    <input type="hidden" name="article" id="articleId" value="7048248"/>
    <input type="hidden" name="view" id="currentView7048248" value="351"/>
    <input type="hidden" name="color" id="productColor7048248" value="2"/>
    <input type="hidden" name="size" id="size" value="2"/>
    <input type="hidden" name="quantity" id="quantity" value="1"/>

<a onclick="document.tshirt_form.submit()"
id="popupajouterpanier" href="#inlinepopupajouterpanier">Ajouter au panier</a>

<iframe src="" name="formiframe" id="formiframe" width="400" height="400"></iframe>

</form>

或者您可以在我的网站上进行实时测试:http: //www.ni-dieu-ni-maitre.com/mac.php

该表单应该将一件 T 恤添加到购物篮中,然后显示带有刚刚添加的 T 恤的购物篮页面。使用 Windows,一切都可以完美运行。但是对于 OS X 10.8.3,当您提交表单时,它只会将购物篮的页面加载到 iframe 中,但购物篮仍然是空的!看起来表单没有正确发送数据。

当我使用 OS X 10.8.3 进行测试时,该错误仅发生在 Safari 上。该表单适用于 Firefox。但是我的一些用户报告说,无论他们使用 Safari 还是 Firefox,这项工作都无法在 OS X 下运行。

请注意,这是跨域的(不确定是否重要)。该页面将表单的数据发送到不同的域(spreadshirt.com 的购物篮)。

如果我不将其提交到 iframe 中,该表单将起作用。

更新:表单的操作目的地是 spreadshirt.com 购物篮。我只是注意到,如果我在提交表单之前使用 Safari 访问此页面,那么它将在提交到 iframe 时起作用!如果我不先访问 spreadshirt.com 网站,Safari 似乎不想创建 cookie。但我不明白为什么它不适用于其他浏览器以及为什么该错误只影响 iframe... 任何解决方法?根据另一个主题,似乎是跨域cookie问题:在Safari中设置跨域cookie

更新 #2:将 Safari 的配置设置为从不阻止 cookie 似乎可以解决问题。默认为“阻止第三方 cookie”。那么除了要求我的用户更改他们的设置之外,我的情况有什么解决方法吗?

4

0 回答 0