1function spektrixGetIframeCoords(elem) { 2 var body = document.body; 3 var docEl = document.documentElement; 4 5 var box = elem.getBoundingClientRect(); 6 7 var scrollTop = window.pageYOffset || docEl.scrollTop || body.scrollTop; 8 var clientTop = docEl.clientTop || body.clientTop || 0; 9 var top = box.top + scrollTop - clientTop; 10 11 return { top: Math.round(top) }; 12} 13 14function scrollSpektrixIframe(iframeActiveElementOffset) { 15 var iframe = document.getElementById('SpektrixIFrame'); 16 var spektrixIframeOffset = spektrixGetIframeCoords(iframe).top; 17 18 window.scrollTo(0, spektrixIframeOffset + iframeActiveElementOffset); 19} 20 21window.addEventListener('message', function(event) { 22 var allowedOrigins = [ 23 /\.spektrix\.com(:\d+)?$/i, 24 /\.chicagosinfonietta\.org$/i 25 ]; 26 if (allowedOrigins.some(regex => regex.test(event.origin))) { 27 try { 28 var message = JSON.parse(event.data); 29 var offset = message['spektrixOffset']; 30 31 if (offset && !isNaN(offset) && offset > 0) { 32 scrollSpektrixIframe(offset); 33 } 34 } catch (ex) { 35 return; 36 } 37 } 38} );
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.