我有一个使用Javascript/HTML编写的Windows 8应用程序,在iframe中有一个Paypal表单:
<form action="https://www.paypal.com/cgi-bin/webscr" method="post" target="_blank">
<input type="hidden" name="cmd" value="_s-xclick">
<input type="hidden" name="on0" value="Pages">
<select name="os0">
<option value="10">$1.95</option>
<option value="25">$2.95</option>
</select>
<input type="hidden" name="currency_code" value="USD">
<input type="hidden" name="encrypted" value="[removed]">
<input type="image" src="/btn_buynow_LG.gif" border="0" name="submit" alt="">
</form>
这个表单在所有浏览器中都可以正常工作,包括IE10,但是当从Windows 8应用程序的iframe中提交时,它会将用户带到Paypal主页。这通常表示表单存在问题。我尝试过托管的Paypal按钮、加密的、未加密的按钮,它们都表现出相同的行为。只有当我从Windows 8应用程序中提交此表单时,它才会跳转到Paypal.com主页。
我还尝试了将每个URL添加到我的清单中作为允许的URL:
<ApplicationContentUriRules>
<Rule Match="http://example.com" Type="include" />
<Rule Match="http://*.example.com" Type="include" />
<Rule Match="http://paypal.com" Type="include" />
<Rule Match="http://*.paypal.com" Type="include" />
<Rule Match="https://paypal.com" Type="include" />
<Rule Match="https://*.paypal.com" Type="include" />
</ApplicationContentUriRules>
我尝试添加/删除沙盒属性,并添加所有组合的属性,如下所示:
<iframe sandbox="allow-same-origin allow-top-navigation allow-forms allow-scripts allow-popups" src="http://example.com/paypalbtn.html"></iframe>
如果我去掉
target="_blank"
,那么Windows 8应用程序将导航到黑屏并挂起。我被迫使用alt-tab并关闭应用程序。我认为这是在另一个进程中向新窗口进行表单提交的问题。如何从Windows 8应用程序的iframe内启动Paypal?
需要一个表单POST吗?我现在意识到一个表单GET可以工作。