Lesezeichen zum Senden der Seitenquelle an das Formular
Ich verwende ein Lesezeichen, um die aktuelle Seitenquelle an eine Serverfunktion zu senden, die sie dann verarbeitet (speichert sie, es müssen keine Informationen an den Benutzer zurückgegeben werden).
Achtung: hässliches Javascript voraus, es ist keine Sprache, die ich normalerweise verwenden muss.
Hier ist das Lesezeichen, hübsch gedruckt, um das Lesen zu erleichtern:
javascript: (function () {
var h = document.documentElement.innerHTML;
function c(a, b) {
var c = document.createElement("textarea");
c.name = a;
c.value = b;
d.appendChild(c)
}(document), d = document.createElement("form");
d.method = "POST";
d.action = "http://example.com/do.php";
d.enctype = "multipart/form-data";
d.target = "_blank";
c("h", h);
c("u", "1234");
document.body.appendChild(d);
d.submit();
})();
Dies funktioniert im Grunde genommen, "do.php" erhält die Kopf- und Körperabschnitte in Form der Variablen h.
Es scheint jedoch nur einmal für jede Seite zu funktionieren. Wenn das Lesezeichen zweimal für dieselbe Seite gedrückt wird, geschieht nichts. Wenn die Seite neu geladen wird, funktioniert es wieder. Gibt es etwas, das ich zurücksetzen sollte? (Einmaliges Ausführen reicht natürlich aus, aber es wäre schön, dem Benutzer beim zweiten Drücken eine Rückmeldung zu geben).
Zweitens öffnet sich ein neues Tab / Fenster. Ich kann das umgehen, indem ich do.php veranlasse, Javascript zurückzugeben, um das Fenster zu schließen (Hinweis: Dies ist nur zu Testzwecken, kein echter Code):
<?php
$page = $_REQUEST['h'];
file_put_contents('/tmp/work.txt', $page);
echo '<script type="text/javascript">window.close();</script>"';
?>
Hässlich. Schnelles Aufblitzen des neuen Tabs, dann ist es weg. Gibt es einen besseren Ansatz? Eine "Erfolgsmeldung" wäre nett, aber ich kann nicht verstehen, wie man das umsetzt.