В моем коде lisp я пытаюсь использовать (eww url), чтобы открыть страницу. Как я могу узнать, что страница загружена? Мне нужно обработать буфер eww.eww: Как сообщить, что страница загружена
Emacs 24,4
В моем коде lisp я пытаюсь использовать (eww url), чтобы открыть страницу. Как я могу узнать, что страница загружена? Мне нужно обработать буфер eww.eww: Как сообщить, что страница загружена
Emacs 24,4
К сожалению, eww
не появляется вызывать крюк после завершения рендеринга страницы, так что вам нужно подключить в eww
на более низком уровне:
(defun eww-render-and-do-stuff (status url &optional point)
(eww-render status url point)
(do-stuff))
(let ((url "http://emacs.stackexchange.com"))
(url-retrieve url 'eww-render-and-do-stuff (list url)))
Спасибо за ваш ответ. Меня устраивает. Но у меня есть некоторые вопросы о вашем ответе. Я попытался заменить «eww-render-and-do-stuff» на «eww-render» и поместил реальный код для заполнения после «url-retrieve», он не работает должным образом. Итак, мой вопрос заключается в том, что отличает использование функции eww-render-and-do-stuff и встроенного кода напрямую? –
См. 'C-h f url-retrieve' и аргумент' CALLBACK'. – phils
@EnzoChi, 'url-retrieve' работает асинхронно - он может вернуться до того, как страница закончит загрузку, и пусть загрузка будет продолжена в фоновом режиме. Если вы поместите 'do-stuff' после' url-retrieve', он, вероятно, запустится до завершения загрузки и, из-за ограничений в движке Emacs Lisp, вероятно, предотвратит завершение загрузки. – jch
Я d предложите «Mx report-emacs-bug» запросить для этого новый eww-hook. – phils