您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Adds <br> before and after <code> tags on FreeCodeCamp using Monaco Editor API
- // ==UserScript==
- // @name Add <br> around <code> tags on FreeCodeCamp
- // @namespace http://tampermonkey.net/
- // @version 0.7
- // @description Adds <br> before and after <code> tags on FreeCodeCamp using Monaco Editor API
- // @author Geromet
- // @match https://www.freecodecamp.org/learn/*
- // @grant none
- // @license MIT
- // @run-at document-end
- // ==/UserScript==
- (function() {
- 'use strict';
- readPage();
- function addLineBreaks() {
- const codeElements = document.getElementsByTagName('code');
- for (const codeElement of codeElements) {
- const prevSibling = codeElement.previousSibling;
- const nextSibling = codeElement.nextSibling;
- if (prevSibling && prevSibling.tagName === 'BR' && nextSibling && nextSibling.tagName === 'BR') {
- continue;
- }
- const lineBreakBefore = document.createElement('br');
- codeElement.parentNode.insertBefore(lineBreakBefore, codeElement);
- const lineBreakAfter = document.createElement('br');
- codeElement.parentNode.insertBefore(lineBreakAfter, codeElement.nextSibling);
- }
- }
- function simulateMouseDrag(element) {
- const event = new MouseEvent('mousedown', {
- bubbles: true,
- cancelable: true,
- clientX: element.getBoundingClientRect().left,
- clientY: element.getBoundingClientRect().top,
- });
- element.dispatchEvent(event);
- const moveEvent = new MouseEvent('mousemove', {
- bubbles: true,
- cancelable: true,
- clientX: element.getBoundingClientRect().left + 1,
- clientY: element.getBoundingClientRect().top,
- });
- element.dispatchEvent(moveEvent);
- const upEvent = new MouseEvent('mouseup', {
- bubbles: true,
- cancelable: true,
- });
- element.dispatchEvent(upEvent);
- }
- function onSubmitButtonClick() {
- setTimeout(function() {
- location.reload();
- }, 1000);
- }
- function oncheckButtonClick() {
- setTimeout(setSubmitButton(),1000);
- }
- function readPage()
- {
- const intervalId = setInterval(function() {
- const codeElements = document.getElementsByTagName('code');
- if (codeElements.length > 0) {
- addLineBreaks();
- const checkButton = document.querySelector('button[data-playwright-test-label="lowerJaw-check-button"]');
- if(checkButton)
- {
- checkButton.addEventListener('click', oncheckButtonClick);
- }
- const reflexSplitter = document.querySelector('.reflex-splitter');
- if (reflexSplitter) {
- simulateMouseDrag(reflexSplitter);
- }
- clearInterval(intervalId);
- }
- }, 100);
- }
- function setSubmitButton()
- {
- const submitButton = document.querySelector('button[data-playwright-test-label="lowerJaw-submit-button"]');
- if (submitButton) {
- submitButton.addEventListener('click', onSubmitButtonClick);
- }
- }
- })();