瀏覽代碼

Commence vigilance for stickies immediately on toggle

master
Said Achmiz 6 年之前
父節點
當前提交
4ee4f5f11f
共有 3 個檔案被更改,包括 30 行新增28 行删除
  1. 0
    24
      src/contentScript.js
  2. 29
    3
      src/functions.js
  3. 1
    1
      src/popup.js

+ 0
- 24
src/contentScript.js 查看文件

return shouldKillSticky; return shouldKillSticky;
} }


/* Some websites add sticky elements after loading, or make existing elements
sticky (either on a timer, or based on user actions). CONSTANT VIGILANCE
counteracts this behavior, by watching the DOM for mutations, and, if
necessary, killing any newly-formed stickies.
*/
function startConstantVigilance() {
var observer = new MutationObserver((mutationsList, observer) => {
for (var mutation of mutationsList) {
killSticky(mutation.target);
}
});

console.log("Commencing vigilance for stickies!");
observer.observe(document.querySelector("html"), {
attributes: true,
childList: true,
subtree: true
});
}

/******************/ /******************/
/* INITIALIZATION */ /* INITIALIZATION */
/******************/ /******************/
let shouldKillSticky = checkForShouldKillSticky(result); let shouldKillSticky = checkForShouldKillSticky(result);
updateIcon(shouldKillSticky); updateIcon(shouldKillSticky);
if (shouldKillSticky) { if (shouldKillSticky) {
function beginKillingStickies() {
killSticky();
startConstantVigilance();
}
if (document.readyState == "loading") { if (document.readyState == "loading") {
document.addEventListener("DOMContentLoaded", beginKillingStickies); document.addEventListener("DOMContentLoaded", beginKillingStickies);
} else { } else {

+ 29
- 3
src/functions.js 查看文件

'sticky' or 'fixed', and removes those elements. 'sticky' or 'fixed', and removes those elements.
*/ */
function killSticky(root) { function killSticky(root) {
var message = root ? "Killing all stickies!" : "Killing more stickies!";
console.log(message);

root = root || document.querySelector("body"); root = root || document.querySelector("body");
root.querySelectorAll('*').forEach(element => { root.querySelectorAll('*').forEach(element => {
if (getComputedStyle(element).position === 'fixed' || if (getComputedStyle(element).position === 'fixed' ||
getComputedStyle(element).position === 'sticky') { getComputedStyle(element).position === 'sticky') {
console.log("Killing sticky!");
element.remove(); element.remove();
} }
}); });
container.style.setProperty("overflow-y", "auto", "important"); container.style.setProperty("overflow-y", "auto", "important");
}); });
} }

/* Some websites add sticky elements after loading, or make existing elements
sticky (either on a timer, or based on user actions). CONSTANT VIGILANCE
counteracts this behavior, by watching the DOM for mutations, and, if
necessary, killing any newly-formed stickies.
*/
function startConstantVigilance() {
var observer = new MutationObserver((mutationsList, observer) => {
for (var mutation of mutationsList) {
killSticky(mutation.target);
}
});

console.log("Commencing vigilance for stickies!");
observer.observe(document.querySelector("html"), {
attributes: true,
childList: true,
subtree: true
});
}

/* Immediately kill all stickies, then commence constant vigilance.
*/
function beginKillingStickies() {
killSticky();
startConstantVigilance();
}


+ 1
- 1
src/popup.js 查看文件

Otherwise, show the reload button. */ Otherwise, show the reload button. */
let shouldKillSticky = AKS.pageMatched && !AKS.pageExcluded; let shouldKillSticky = AKS.pageMatched && !AKS.pageExcluded;
if (AKS.pageMatched && !AKS.pageExcluded) { if (AKS.pageMatched && !AKS.pageExcluded) {
chrome.tabs.executeScript(null, { code: 'killSticky()' });
chrome.tabs.executeScript(null, { code: 'beginKillingStickies()' });
reloadButton.classList.toggle("active", false); reloadButton.classList.toggle("active", false);
} else { } else {
reloadButton.classList.toggle("active", true); reloadButton.classList.toggle("active", true);

Loading…
取消
儲存