A web blog and personal homepage engine written in Go.
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。
 
 

35 行
700 B

package mogrify
import (
"fmt"
"regexp"
"strings"
)
// Outgoing HTML filters for responses (experimental).
var reImgTag = regexp.MustCompile(`<img ([^>]+)>`)
// LazyLoadImages modifies <img> tags to add loading="lazy" attribute to them.
// Ignores image tags that already include the attribute.
func LazyLoadImages(input string) string {
m := reImgTag.FindAllStringSubmatch(input, -1)
if m == nil {
return input
}
for _, match := range m {
var (
tag = match[0]
attrs = match[1]
replace = fmt.Sprintf(`<img %s loading="lazy">`, attrs)
)
if strings.Contains(attrs, "loading=") {
continue
}
input = strings.Replace(input, tag, replace, -1)
}
return input
}