docbrown/app/assets/javascripts/initializers/initializePWAFunctionality.js
Ben Halpern 80f42a544a
Add noopener to external target blank links (#2923)
* Add noopener to external target blank links

* Add noopener to external target blank links properly

* Fix schema mistake
2019-05-21 13:56:25 -04:00

35 lines
1.3 KiB
JavaScript

function initializePWAFunctionality() {
if (window.matchMedia('(display-mode: standalone)').matches) {
document
.getElementById('pwa-nav-buttons')
.classList.add('pwa-nav-buttons--showing');
document.getElementById('app-back-button').onclick = function(e) {
e.preventDefault();
window.history.back();
};
document.getElementById('app-forward-button').onclick = function(e) {
e.preventDefault();
window.history.forward();
};
document.getElementById('app-refresh-button').onclick = function(e) {
e.preventDefault();
window.location.reload();
};
var isTouchDevice = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|DEV-Native-ios/i.test(navigator.userAgent);
if (!isTouchDevice) {
var domain = window.location.protocol + '//' + window.location.host
var links = document.getElementsByTagName("a");
for(var i=0, max=links.length; i<max; i++) {
var a = links[i];
if (a.href.indexOf(domain + '/') === 0
|| a.href.indexOf('/') === 0
) {
// Is internal link. Do nothing right now.
} else {
a.setAttribute('target', '_blank');
a.setAttribute('rel', 'noopener noreferrer');
}
}
}
}
}