Hier ist die Methode, die in Commerce SagePay- und Commerce Paypoint Drupal-Modulen verwendet wird und die im Grunde genommen document.location.href
mit dem alten Wert verglichen wird, indem zuerst ein eigener, dann ein externer Iframe geladen wird .
Grundsätzlich besteht die Idee darin, die leere Seite als Platzhalter mit eigenem JS-Code und verstecktem Formular zu laden. Der übergeordnete JS-Code sendet dann das versteckte Formular, in dem es #action
auf den externen Iframe verweist. Sobald die Umleitung / Übermittlung erfolgt ist, kann der JS-Code, der noch auf dieser Seite ausgeführt wird, Ihre document.location.href
Wertänderungen verfolgen .
Hier ist das in iframe verwendete Beispiel-JS:
;(function($) {
Drupal.behaviors.commercePayPointIFrame = {
attach: function (context, settings) {
if (top.location != location) {
$('html').hide();
top.location.href = document.location.href;
}
}
}
})(jQuery);
Und hier ist JS, das auf der übergeordneten Seite verwendet wird:
;(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);
Dann müssen Sie in eine temporäre leere Zielseite das Formular einfügen, das zur externen Seite umleitet.
src
Eigenschaft ändern, wenn auf einen Link im Iframe geklickt wird? Da bin ich mir nicht sicher - wenn ich raten müsste, würde ich "nein" sagen. Es gibt Möglichkeiten, Eigenschaften zu überwachen (zumindest in Firefox AFAIK), aber ich bin mir nicht sicher, ob dies in diesem Fall von Nutzen sein wird.