【问题标题】:Breaking out of iframes with Javascript使用 Javascript 突破 iframe
【发布时间】:2014-04-10 13:30:19
【问题描述】:

编辑(改写):网站已加载 iframe 中,但 iframe 中有 1 个链接,我想在用户点击时将其带出 iframe ,回到 iframe 下方的主窗口。

我找到了

top.location.href = 'page.htm';

,但我不知道如何将其输入到这个“复杂”代码中。

这是我认为应该在的文件:

{literal}

$(document).ready( function() {

    $('#payment_paypal_express_checkout').click(function() {
        $('#paypal_payment_form').submit();
        return false;
    });

    $('#paypal_payment_form').live('submit', function() {
        var nb = $('#quantity_wanted').val();
        var id = $('#idCombination').val();

        $('#paypal_payment_form input[name=quantity]').val(nb);
        $('#paypal_payment_form input[name=id_p_attr]').val(id);
    });

    function displayExpressCheckoutShortcut() {
        var id_product = $('input[name="id_product"]').val();
        var id_product_attribute = $('input[name="id_product_attribute"]').val();

        $.ajax({
            type: "GET",
            url: baseDir+'/modules/paypal/express_checkout/ajax.php',
            data: { get_qty: "1", id_product: id_product, id_product_attribute: id_product_attribute },
            cache: false,
            success: function(result) {
                if (result == '1') {
                    $('#container_express_checkout').slideDown();
                } else {
                    $('#container_express_checkout').slideUp();
                }
                return true;
            }
        });
    }

    $('select[name^="group_"]').change(function () {
        displayExpressCheckoutShortcut();
    });

    $('.color_pick').click(function () {
        displayExpressCheckoutShortcut();
    });

    {/literal}
    {if isset($paypal_authorization)}
    {literal}

        /* 1.5 One page checkout*/
        var qty = $('.qty-field.cart_quantity_input').val();
        $('.qty-field.cart_quantity_input').after(qty);
        $('.qty-field.cart_quantity_input, .cart_total_bar, .cart_quantity_delete, #cart_voucher *').remove();

        var br = $('.cart > a').prev();
        br.prev().remove();
        br.remove();
        $('.cart.ui-content > a').remove();

        var gift_fieldset = $('#gift_div').prev();
        var gift_title = gift_fieldset.prev();
        $('#gift_div, #gift_mobile_div').remove();
        gift_fieldset.remove();
        gift_title.remove();

    {/literal}
    {/if}
    {if isset($paypal_confirmation)}
    {literal}

        $('#container_express_checkout').hide();

        $('#cgv').live('click', function() {
            if ($('#cgv:checked').length != 0)
                $(location).attr('href', '{/literal}{$paypal_confirmation}{literal}');
        });

        // old jQuery compatibility
        $('#cgv').click(function() {
            if ($('#cgv:checked').length != 0)
                $(location).attr('href', '{/literal}{$paypal_confirmation}{literal}');
        });

    {/literal}
    {else if isset($paypal_order_opc)}
    {literal}

        $('#cgv').live('click', function() {
            if ($('#cgv:checked').length != 0)
                checkOrder();
        });

        // old jQuery compatibility
        $('#cgv').click(function() {
            if ($('#cgv:checked').length != 0)
                checkOrder();
        });

    {/literal}
    {/if}
    {literal}

    var modulePath = 'modules/paypal';
    var subFolder = '/integral_evolution';
    var fullPath = baseDir + modulePath + subFolder;
    var confirmTimer = false;

    if ($('form[target="hss_iframe"]').length == 0) {
        if ($('select[name^="group_"]').length > 0)
            displayExpressCheckoutShortcut();
        return false;
    } else {
        checkOrder();
    }

    function checkOrder() {
        confirmTimer = setInterval(getOrdersCount, 1000);
    }

    {/literal}{if isset($id_cart)}{literal}
    function getOrdersCount() {
        $.get(
            fullPath + '/confirm.php',
            { id_cart: '{/literal}{$id_cart}{literal}' },
            function (data) {
                if ((typeof(data) != 'undefined') && (data > 0)) {
                    clearInterval(confirmTimer);
                    window.location.replace(fullPath + '/submit.php?id_cart={/literal}{$id_cart}{literal}');
                    $('p.payment_module, p.cart_navigation').hide();
                }
            }
        );
    }
    {/literal}{/if}{literal}
});

{/literal}

编辑: 也找到了 HTML 的某些部分,认为在那里很容易做到,但实际上似乎不起作用。也许是因为 void(0)?

<a href="javascript:void(0)" target="_top" onclick="$('#paypal_payment_form').submit();" id="paypal_process_payment" mod='paypal'}">

也许这里有人可以帮助我。提前致谢!

最好, 戴夫

【问题讨论】:

    标签: javascript iframe paypal


    【解决方案1】:

    这是一些 JavaScript,如果网站正在被“iframed”,则会将用户从 iframe 重定向到网站:

    <script>if (top !== self) top.location.href = self.location.href;</script>
    

    【讨论】:

    • 谢谢!但是,我认为我用错了措辞。还编辑了我的原始帖子:该网站在 iframe 中加载,但 iframe 中有 1 个链接,当用户单击它时,我想将用户从 iframe 中带出,回到 iframe 下方的主窗口。
    • 可以通过修改上面的 JavaScript 来实现,或者查看锚标签的 target 属性:w3schools.com/tags/att_a_target.asp
    • 谢谢斯蒂芬!我试图将它应用到 HTML A 标签,但它没有工作。当我删除 VOID (0) 并使其成为“常规”链接时,它起作用了。有什么方法可以帮助我将它应用到上面的 JavaScript 中吗?
    【解决方案2】:

    我没有看到您表单的部分代码,但由于您使用的是 submit(),您可以将表单的目标设置为 _top:

    <form target="_top" action="yoururl.php" id="paypal_payment_form">
    

    然后一旦你使用提交,它会打破框架并继续到新的页面。

    <a href="#" onclick="$('#paypal_payment_form').submit();" id="paypal_process_payment" mod='paypal'>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 2012-03-22
      • 1970-01-01
      相关资源
      最近更新 更多