Букмарклет для отправки источника страницы в форму

Я использую букмарклет для отправки источника текущей страницы на серверную функцию, которая затем обрабатывает его (сохраняет его, пользователю не нужно возвращать информацию).

Предупреждение: уродливый Javascript впереди, это не тот язык, который я обычно должен использовать.

Вот букмарклет, довольно напечатанный для удобства чтения:

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();
})();

Это в основном работает, «do.php» получает разделы head и body в форме переменной h.

Тем не менее, кажется, что он работает только один раз для каждой страницы. Если букмарклет нажимается дважды для одной и той же страницы, ничего не происходит. Когда страница перезагружается, она снова работает. Есть ли что-то, что я должен сбросить? (Одного запуска достаточно, конечно, но было бы неплохо дать пользователю обратную связь при втором нажатии).

Во-вторых, появляется новая вкладка / окно. Я могу обойти это, заставив do.php вернуть некоторый javascript, чтобы закрыть окно (примечание: это только для целей тестирования, а не для реального кода):

<?php
$page = $_REQUEST['h'];
file_put_contents('/tmp/work.txt', $page);
echo '<script type="text/javascript">window.close();</script>"';
?>

Некрасиво. Быстрая прошивка новой вкладки, значит она пропала. Есть ли лучший подход? Сообщение об успехе было бы неплохо, но я не понимаю, как это включить.

Ответы на вопрос(1)

Ваш ответ на вопрос