Đây là phương thức được sử dụng trong Commerce SagePay và trong các mô-đun Drupal Commerce Paypoint về cơ bản so sánh document.location.href
với giá trị cũ bằng cách tải iframe của chính nó, sau đó là bên ngoài.
Vì vậy, về cơ bản, ý tưởng là tải trang trống dưới dạng giữ chỗ với mã JS riêng và biểu mẫu ẩn. Sau đó, mã JS mẹ sẽ gửi biểu mẫu ẩn đó trong đó #action
điểm của nó tới iframe bên ngoài. Khi chuyển hướng / gửi xảy ra, mã JS vẫn đang chạy trên trang đó có thể theo dõi các document.location.href
thay đổi giá trị của bạn .
Dưới đây là ví dụ JS được sử dụng trong iframe:
;(function($) {
Drupal.behaviors.commercePayPointIFrame = {
attach: function (context, settings) {
if (top.location != location) {
$('html').hide();
top.location.href = document.location.href;
}
}
}
})(jQuery);
Và đây là JS được sử dụng trong trang mẹ:
;(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);
Sau đó, trong trang đích trống tạm thời, bạn cần bao gồm biểu mẫu sẽ chuyển hướng đến trang bên ngoài.
src
sự thay đổi sở hữu khi một liên kết trong iframe được nhấp? Tôi không chắc về điều đó - nếu tôi phải đoán, nếu sẽ nói "không". Có nhiều cách để giám sát các thuộc tính (trong Firefox ít nhất là AFAIK) nhưng tôi không chắc liệu nó có được sử dụng trong trường hợp này hay không.