Ось метод, який використовується в Commerce SagePay та в Commerce Paypoint Drupal модулі, який в основному порівнює document.location.href
зі старим значенням спочатку завантажуючи власний iframe, а потім зовнішній.
Тому в основному ідея полягає у завантаженні порожньої сторінки як заповнювача з власним кодом JS та прихованою формою. Тоді батьківський JS-код подасть ту приховану форму, де його #action
вказує на зовнішній iframe. Як тільки переадресація / подача відбудеться, код JS, який все ще працює на цій сторінці, може відстежувати document.location.href
зміни ваших значень.
Ось приклад JS, який використовується в iframe:
;(function($) {
Drupal.behaviors.commercePayPointIFrame = {
attach: function (context, settings) {
if (top.location != location) {
$('html').hide();
top.location.href = document.location.href;
}
}
}
})(jQuery);
І ось JS використовується на батьківській сторінці:
;(function($) {
/**
* Automatically submit the hidden form that points to the iframe.
*/
Drupal.behaviors.commercePayPoint = {
attach: function (context, settings) {
$('div.payment-redirect-form form', context).submit();
$('div.payment-redirect-form #edit-submit', context).hide();
$('div.payment-redirect-form .checkout-help', context).hide();
}
}
})(jQuery);
Потім у тимчасову порожню цільову сторінку потрібно включити форму, яка буде перенаправляти на зовнішню сторінку.
src
зміниться властивість при натисканні на посилання в iframe? Я не впевнений у цьому - якби мені довелося здогадуватися, чи сказав би "ні". Там є способи властивостей монітора (в Firefox по крайней мере , AFAIK) , але я не впевнений , чи буде якесь - або використання в даному випадку.