通过删除IE 11中的帧来关闭PayPal Lightbox和重新加载父页面



我正在使用Lightbox的PayPal嵌入式支付流量:

https://developer.paypal.com/docs/classic/adaptive-payments/integration-guide/apintro/

付款完成后,用户将指向成功URL。在成功URL上,我有一个脚本,该脚本被认为是成功URL的内容替换顶级窗口内容:

https://developer.paypal.com/docs/classic/express-checkout/digital-goods/closingwindow/

我的代码如下:

$(document).ready(function(){
    if (window != top) {
        top.location.replace(document.location);
    }
})

这在Chrome,Opera和Firefox中效果很好。问题在于,在IE 11和Edge中,PPDG框架仍然存在,这阻止了我的页面加载全屏。我尝试以各种方式使用CloseFlow(),例如:

$(document).ready(function () {
    dgFlow = top.dgFlow || top.opener.top.dgFlow;
    dgFlow.closeFlow();
    if (window != top) {
        top.location.replace(document.location);
    }
})

但是,我似乎无法使其在IE或Edge中正常工作。

这是我用来调用嵌入式流的代码:

<form action="https://www.sandbox.paypal.com/webapps/adaptivepayment/flow/pay" target="PPDGFrame" class="standard">
    <input type="image" id="submitBtn" value="Pay with PayPal" src="https://www.paypalobjects.com/en_US/i/btn/btn_paynowCC_LG.gif">
    <input id="type" type="hidden" name="expType" value="light">
    <input id="paykey" type="hidden" name="paykey" value=@ViewData["paykey"]></form>
<script src="https://www.paypalobjects.com/js/external/dg.js"></script>
<script>var dgFlow = new PAYPAL.apps.DGFlow({ trigger: 'submitBtn' });</script>

是否有人可以帮助我在IE和Edge中进行这项工作?

好吧,我使用window.opener弄清楚了这一点。因此,看来我的Edge的工作代码,即11,Chrome,FF和Opera是:

$(document).ready(function () {
    if (window.opener) { // check if opened in popup
        window.close();
    }
    if (window != top) {
        top.location.replace(document.location);
    }
})

到目前为止很好........

最新更新