-
-
Save jithurjacob/4d572b6e6be193650cdf8bb28536326a to your computer and use it in GitHub Desktop.
var jq = document.createElement('script'); | |
jq.src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"; | |
document.getElementsByTagName('head')[0].appendChild(jq); | |
// ... give time for script to load, then type (or see below for non wait option) | |
//localStorage.setItem("playbackRate", 2.1); | |
console.log('[start]Pluralsight Continuous Play'); | |
window.setInterval(function(){ | |
$('#next-module').click(); | |
},30000); |
@mayanknc Now that Plularshight UI has been restylished, you script now longer works as the text seems to be changed in button (now format is like 'Start module X'). Could your update your script?
Here is my own spin on the code. @mayanknc @JarkkoLaiho @John-Blair
This should work since it checks for the key words.
const keyWord = "Start module";
let autoNext = () => {
Array.from(document.querySelectorAll('button'))
.filter(b => b.textContent.includes(keyWord))
.forEach(b => b.click());
};
setInterval(autoNext, 2500);
Updated PluralSight Auto Play Behavior
const autoClickButton = (xpath) => {
// Checks if an element is visible on the page.
const isVisible = (element) => {
const style = window.getComputedStyle(element);
return style.display !== "none" && style.visibility !== "hidden" && style.opacity !== "0";
};
// Set up a MutationObserver to monitor DOM changes.
const observer = new MutationObserver(() => {
const button = document.evaluate(
xpath,
document,
null,
XPathResult.FIRST_ORDERED_NODE_TYPE,
null
).singleNodeValue;
// If the button exists and is visible, click it.
if (button && isVisible(button)) {
button.click();
console.log(`Button clicked for XPath: ${xpath}`);
}
});
// Start observing the DOM for changes.
observer.observe(document.body, {
childList: true, // Monitors addition or removal of child nodes.
subtree: true, // Monitors changes in all descendant nodes.
});
};
// Clicks 'Next Lesson' button dynamically.
autoClickButton("//button[@aria-label='Next Lesson']");
// Clicks 'Start module' button dynamically.
autoClickButton("//button[contains(text(), 'Start module')]");
This script is designed to dynamically and repeatedly click buttons on a webpage with frequently updating content, such as in Single Page Applications (SPA). It leverages a MutationObserver
to track changes in the DOM and react only when necessary. Here's what it does:
-
Listens for DOM changes:
It uses aMutationObserver
to detect when the specified button is added to or reappears in the DOM. -
Validates button visibility:
Before clicking, it ensures the button is visible on the page (i.e., not hidden, transparent, or removed). -
Continuously handles dynamic content:
The script works persistently, clicking the button each time it appears or reappears. -
Reusability:
TheautoClickButton
function accepts anXPath
selector, making it adaptable to various buttons. -
Why is it more efficient than
setInterval
?
UnlikesetInterval
, which repeatedly executes code at fixed intervals regardless of whether a button appears,MutationObserver
reacts only when the DOM changes. This minimizes CPU usage, avoids unnecessary checks, and ensures the script works in sync with the dynamic updates of the page.
Enjoy it 😊
Maximize your learning experience with ease!
I’m thrilled to introduce Pluralsight™ Autoplay, designed to enhance your productivity on Pluralsight.
What does it do?
This extension adds an Auto Play feature for Pluralsight courses, providing a seamless, uninterrupted learning experience.
Key Benefits:
1.- Automatically advances to the next video in a course.
2.- Keeps your learning flow smooth and distraction-free.
3.- Helps you stay focused and engaged during long study sessions.
4.- Ideal for learners who want a hands-free, continuous experience.
Try it now and take your productivity to the next level: Pluralsight™ Autoplay
Your feedback means the world to me! Let me know how it works for you. 🚀
@spahbedsuren Simply Awesome!!! Thanks