I often use these for things like football or cricket scores. Provided the score is contained in a single element, this will duplicate its text content to the tab title. If necessary, splice in some text manipulation. One useful trick, with selectors, is to add an `id='bobbins'` attribute to what you want to watch, so you can use the `#bobbins` selector. ```js window.q = (x,y=document) => y.querySelector(x) window.qq = (x,y=document) => Array.from(y.querySelectorAll(x)) function watch(x,dt=1000) { if( window.titleInterval ) clearInterval(window.titleInterval) window.titleInterval = setInterval(_ => { let a = q(x) if( a ) { let t = a.textContent document.title = t } },dt) } window.watch = watch ``` # v2 This allows you to transform the text before putting it in the title bar. ```js window.q = (x,y=document) => y.querySelector(x) window.qq = (x,y=document) => Array.from(y.querySelectorAll(x)) function watch(x, dt = 1000, callback = (x) => x) { if( window.titleInterval ) clearInterval(window.titleInterval) window.titleInterval = setInterval(_ => { let a = q(x) if( a ) { let t = a.textContent document.title = callback(t) } },dt) } window.watch = watch ``` # v3 This also allows you to give an actual element object or a selector. It assumes that anything that isn't a string is an element to be watched. ```js window.q = (x,y=document) => y.querySelector(x) window.qq = (x,y=document) => Array.from(y.querySelectorAll(x)) function watch(x, dt = 1000, callback = (x) => x) { if( window.titleInterval ) clearInterval(window.titleInterval) window.titleInterval = setInterval(_ => { let a = x if( typeof a === "string" ) { a = q(a) } if( a ) { let t = a.textContent document.title = callback(t) } },dt) } window.watch = watch ```