Skip to content

Commit

Permalink
Add function to search for correct window in about:blank tabs
Browse files Browse the repository at this point in the history
  • Loading branch information
DerpmanDev authored Sep 1, 2024
1 parent ef1dd61 commit 82ecd41
Showing 1 changed file with 41 additions and 24 deletions.
65 changes: 41 additions & 24 deletions static/assets/js/loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -276,31 +276,48 @@ function handleOpen(url) {
return null;
}

function getWindow() {
let currentWindow = window;
while (currentWindow.parent && currentWindow !== currentWindow.parent) {
currentWindow = currentWindow.parent;
if (typeof currentWindow.handleOpen === 'function') {
return currentWindow;
}
} // Derpman - I did this because on about:blank the intercepting doesn't work, so this searches for the correct window
return window;
}

function interceptFrame() {
if (frame.contentWindow) {
frame.contentWindow.open = function(url, target) {
handleOpen(url);
return null;
};
frame.contentWindow.document.addEventListener('click', event => {
const target = event.target;
if (target.tagName === 'A') {
if (target.getAttribute('target') === '_top' || target.getAttribute('target') === '_blank') {
event.preventDefault();
const href = target.getAttribute('href');
if (href) {
window.parent.handleOpen(href);
}
}
}
});
frame.contentWindow.addEventListener('submit', event => {
event.preventDefault();
});
}
if (frame.contentWindow) {
frame.contentWindow.open = function(url, target) {
handleOpen(url);
return null;
};

frame.contentWindow.document.addEventListener('click', event => {
const target = event.target;
if (target.tagName === 'A') {
const targetAttr = target.getAttribute('target');
if (targetAttr === '_top' || targetAttr === '_blank') {
event.preventDefault();
const href = target.getAttribute('href');
if (href) {
const correctWindow = getWindow();
correctWindow.handleOpen(href);
}
}
}
});

frame.contentWindow.addEventListener('submit', event => {
event.preventDefault();
});
}
}

frame.addEventListener('load', interceptFrame);

document.addEventListener('DOMContentLoaded', function() {
onFrameClick();
setInterval(onFrameClick, 1000);
});
onFrameClick();
setInterval(onFrameClick, 1000);
});

0 comments on commit 82ecd41

Please sign in to comment.