1document.addEventListener('DOMContentLoaded', () => { 2 3 let feedContainers = document.getElementsByClassName('rss-feed') 4 5 for (let container of feedContainers) { 6 let url = container.dataset.rssFeedUrl 7 fetch(url) 8 .then(response => response.text()) 9 .then(data => { 10 let parser = new DOMParser() 11 let rss = parser.parseFromString(data, 'application/xml') 12 let list = buildRSSItemList(rss) 13 container.appendChild(list) 14 }); 15 } 16 17}) 18 19function buildRSSItemList(data) { 20 let ul = document.createElement('ul') 21 let items = data.getElementsByTagName('item') 22 for (let item of items) { 23 let title = DOMPurify.sanitize(item.getElementsByTagName('title')[0].textContent) 24 let link = DOMPurify.sanitize(item.getElementsByTagName('link')[0].textContent) 25 let li = document.createElement('li') 26 let a = document.createElement('a') 27 a.href = link 28 a.target = '_blank' 29 a.textContent = title 30 li.appendChild(a) 31 ul.appendChild(li) 32 } 33 return ul 34}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.