Berikut adalah metode yang digunakan dalam Commerce SagePay dan modul Commerce Paypoint Drupal yang pada dasarnya membandingkan document.location.href
dengan nilai lama dengan terlebih dahulu memuat iframe sendiri, kemudian eksternal.
Jadi pada dasarnya idenya adalah memuat halaman kosong sebagai pengganti dengan kode JS dan bentuk tersembunyi. Kemudian kode induk JS akan mengirimkan formulir tersembunyi di mana #action
menunjuk ke iframe eksternal. Setelah pengalihan / pengiriman terjadi, kode JS yang masih berjalan di halaman itu dapat melacak document.location.href
perubahan nilai Anda .
Berikut ini contoh JS yang digunakan di iframe:
;(function($) {
Drupal.behaviors.commercePayPointIFrame = {
attach: function (context, settings) {
if (top.location != location) {
$('html').hide();
top.location.href = document.location.href;
}
}
}
})(jQuery);
Dan di sini JS digunakan di halaman induk:
;(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);
Kemudian di halaman pendaratan sementara yang kosong, Anda harus memasukkan formulir yang akan dialihkan ke halaman eksternal.
src
properti akan berubah ketika tautan di iframe diklik? Saya tidak yakin tentang itu - jika saya harus menebak, apakah akan mengatakan "tidak". Ada beberapa cara untuk memonitor properti (di Firefox setidaknya AFAIK) tetapi saya tidak yakin apakah akan ada gunanya dalam kasus ini.