4
0
Эх сурвалжийг харах

Include remaining tags/attributes for lazy loading (#7636)

* Include remaining tags/attributes for lazy loading

* Suggested change
Inverle 10 сар өмнө
parent
commit
dd5ea7ab4e

+ 12 - 4
lib/lib_rss.php

@@ -368,7 +368,11 @@ function customSimplePie(array $attributes = [], array $curl_options = []): \Sim
 		'iframe' => 'src',
 		'iframe' => 'src',
 		'img' => [
 		'img' => [
 			'longdesc',
 			'longdesc',
-			'src'
+			'src',
+		],
+		'image' => [
+			'longdesc',
+			'src',
 		],
 		],
 		'input' => 'src',
 		'input' => 'src',
 		'ins' => 'cite',
 		'ins' => 'cite',
@@ -632,16 +636,20 @@ function validateEmailAddress(string $email): bool {
 
 
 /**
 /**
  * Add support of image lazy loading
  * Add support of image lazy loading
- * Move content from src attribute to data-original
+ * Move content from src/poster attribute to data-original
  * @param string $content is the text we want to parse
  * @param string $content is the text we want to parse
  */
  */
 function lazyimg(string $content): string {
 function lazyimg(string $content): string {
 	return preg_replace([
 	return preg_replace([
-			'/<((?:img|iframe)[^>]+?)src="([^"]+)"([^>]*)>/i',
-			"/<((?:img|iframe)[^>]+?)src='([^']+)'([^>]*)>/i",
+			'/<((?:img|image|iframe)[^>]+?)src="([^"]+)"([^>]*)>/i',
+			"/<((?:img|image|iframe)[^>]+?)src='([^']+)'([^>]*)>/i",
+			'/<((?:video)[^>]+?)poster="([^"]+)"([^>]*)>/i',
+			"/<((?:video)[^>]+?)poster='([^']+)'([^>]*)>/i",
 		], [
 		], [
 			'<$1src="' . Minz_Url::display('/themes/icons/grey.gif') . '" data-original="$2"$3>',
 			'<$1src="' . Minz_Url::display('/themes/icons/grey.gif') . '" data-original="$2"$3>',
 			"<$1src='" . Minz_Url::display('/themes/icons/grey.gif') . "' data-original='$2'$3>",
 			"<$1src='" . Minz_Url::display('/themes/icons/grey.gif') . "' data-original='$2'$3>",
+			'<$1poster="' . Minz_Url::display('/themes/icons/grey.gif') . '" data-original="$2"$3>',
+			"<$1poster='" . Minz_Url::display('/themes/icons/grey.gif') . "' data-original='$2'$3>",
 		],
 		],
 		$content
 		$content
 	) ?? '';
 	) ?? '';

+ 6 - 2
p/scripts/main.js

@@ -431,8 +431,12 @@ const freshrssOpenArticleEvent = document.createEvent('Event');
 freshrssOpenArticleEvent.initEvent('freshrss:openArticle', true, true);
 freshrssOpenArticleEvent.initEvent('freshrss:openArticle', true, true);
 
 
 function loadLazyImages(rootElement) {
 function loadLazyImages(rootElement) {
-	rootElement.querySelectorAll('img[data-original], iframe[data-original]').forEach(function (el) {
-		el.src = el.getAttribute('data-original');
+	rootElement.querySelectorAll('img[data-original], iframe[data-original], video[data-original]').forEach(function (el) {
+		if (el.tagName === 'VIDEO') {
+			el.poster = el.getAttribute('data-original');
+		} else {
+			el.src = el.getAttribute('data-original');
+		}
 		el.removeAttribute('data-original');
 		el.removeAttribute('data-original');
 	});
 	});
 }
 }