[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] master bdaff9c: Follow meta refresh tags in eww
From: |
Lars Ingebrigtsen |
Subject: |
[Emacs-diffs] master bdaff9c: Follow meta refresh tags in eww |
Date: |
Fri, 25 Dec 2015 17:21:58 +0000 |
branch: master
commit bdaff9c813973c31dfe1cd357b0f5099ccd0b883
Author: Lars Ingebrigtsen <address@hidden>
Commit: Lars Ingebrigtsen <address@hidden>
Follow meta refresh tags in eww
* eww.el (eww-tag-meta): Follow meta refresh tags (bug#22234).
---
lisp/net/eww.el | 22 ++++++++++++++++++++++
1 files changed, 22 insertions(+), 0 deletions(-)
diff --git a/lisp/net/eww.el b/lisp/net/eww.el
index 593ed22..742e1e4 100644
--- a/lisp/net/eww.el
+++ b/lisp/net/eww.el
@@ -415,6 +415,7 @@ Currently this means either text/html or
application/xhtml+xml."
(textarea . eww-tag-textarea)
(select . eww-tag-select)
(link . eww-tag-link)
+ (meta . eww-tag-meta)
(a . eww-tag-a)))))
(erase-buffer)
(shr-insert-document document)
@@ -460,6 +461,27 @@ Currently this means either text/html or
application/xhtml+xml."
where
(plist-put eww-data (cdr where) href))))
+(defvar eww-redirect-level 1)
+
+(defun eww-tag-meta (dom)
+ (when (and (cl-equalp (dom-attr dom 'http-equiv) "refresh")
+ (< eww-redirect-level 5))
+ (when-let (refresh (dom-attr dom 'content))
+ (when (or (string-match "^\\([0-9]+\\) *;.*url=\"\\([^\"]+\\)\"" refresh)
+ (string-match "^\\([0-9]+\\) *;.*url=\\([^ ]+\\)" refresh))
+ (let ((timeout (match-string 1 refresh))
+ (url (match-string 2 refresh))
+ (eww-redirect-level (1+ eww-redirect-level)))
+ (if (equal timeout "0")
+ (eww (shr-expand-url url))
+ (eww-tag-a
+ (dom-node 'a `((href . ,(shr-expand-url url)))
+ (format "Auto refresh in %s second%s disabled"
+ timeout
+ (if (equal timeout "1")
+ ""
+ "s"))))))))))
+
(defun eww-tag-link (dom)
(eww-handle-link dom)
(shr-generic dom))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] master bdaff9c: Follow meta refresh tags in eww,
Lars Ingebrigtsen <=