// Licensed under a BSD license. See license.html for license /* eslint-disable strict */ 'use strict'; // eslint-disable-line (function(){ if (window.frameElement) { // in iframe document.querySelectorAll('a').forEach(a => { // we have to send all links to the parent // otherwise we'll end up with 3rd party // sites under the frame. a.addEventListener('click', e => { // opening a new tab? if (a.target === '_blank') { return; } // change changing hashes? if (a.origin !== window.location.origin || a.pathname !== window.location.pathname) { e.preventDefault(); } window.parent.setUrl(a.href); }); }); window.parent.setTitle(document.title); } else { if (window.location.protocol !== 'file:') { const re = /^(.*?\/manual\/)(.*?)$/; const [,baseURL, articlePath] = re.exec(window.location.href); const href = `${baseURL}#${articlePath.replace('.html', '')}`; window.location.replace(href); // lgtm[js/client-side-unvalidated-url-redirection] } } if (window.prettyPrint) { window.prettyPrint(); } // help translation services translate comments. document.querySelectorAll('span[class=com]').forEach(elem => { elem.classList.add('translate', 'yestranslate'); elem.setAttribute('translate', 'yes'); }); if (window.threejsLessonUtils) { window.threejsLessonUtils.afterPrettify(); } }()); // ios needs this to allow touch events in an iframe window.addEventListener('touchstart', {});