Educake ChatGPT Button + Allow Pasting

Adds a ChatGPT button to Educake which copies question text and opens a ChatGPT window, allowing you to get answers quickly. This script also re-enables the pasting feature in the answer box, so you can copy answers from GPT / Google, and paste them in the answer box

  1. // ==UserScript==
  2. // @name Educake ChatGPT Button + Allow Pasting
  3. // @namespace https://github.com/Z2r-YT/Educake-Pasting
  4. // @version 1.0
  5. // @description Adds a ChatGPT button to Educake which copies question text and opens a ChatGPT window, allowing you to get answers quickly. This script also re-enables the pasting feature in the answer box, so you can copy answers from GPT / Google, and paste them in the answer box
  6. // @author liam @ duckwithsunglasses.com
  7. // @match *://*.educake.co.uk/*
  8. // @grant none
  9. // @license MIT
  10. // @icon data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWw6c3BhY2U9InByZXNlcnZlIiBpZD0iSWNvbnMiIHg9IjAiIHk9IjAiIHZlcnNpb249IjEuMSIgdmlld0JveD0iMCAwIDQ4IDQ4IiBzdHlsZT0iY3Vyc29yOiBkZWZhdWx0OyI+DQogIDxzdHlsZT4NCiAgICAuc3Qze2ZpbGw6bm9uZTtzdHJva2U6IzQ1NDEzYztzdHJva2UtbGluZWNhcDpyb3VuZDtzdHJva2UtbGluZWpvaW46cm91bmQ7c3Ryb2tlLW1pdGVybGltaXQ6MTB9DQogIDwvc3R5bGU+DQogIDxnIGlkPSJYTUxJRF8xNzQ5N18iPg0KICAgIDxlbGxpcHNlIGlkPSJYTUxJRF8xNzUxM18iIGN4PSIyNCIgY3k9IjQ1LjEiIGZpbGw9IiM0NTQxM2MiIG9wYWNpdHk9Ii4xNSIgcng9IjE0LjIiIHJ5PSIxLjkiLz4NCiAgICA8ZyBpZD0iWE1MSURfMTc0OThfIj4NCiAgICAgIDxwYXRoIGlkPSJYTUxJRF8xNzUxMl8iIGZpbGw9IiNkZWJiN2UiIGQ9Ik0zNyA0NC41SDExYy0xLjkgMC0zLjUtMS42LTMuNS0zLjVWNy44QzcuNSA1LjkgOSA0LjQgMTEgNC40aDI2YzEuOSAwIDMuNSAxLjYgMy41IDMuNVY0MWMwIDEuOS0xLjUgMy41LTMuNSAzLjV6Ii8+DQogICAgICA8cGF0aCBpZD0iWE1MSURfMTc1MTFfIiBmaWxsPSIjZjBkNWE4IiBkPSJNMzcgNC40SDExYy0yIDAtMy41IDEuNS0zLjUgMy40djRDNy41IDkuOSA5IDguNCAxMSA4LjRoMjZjMS45IDAgMy41IDEuNiAzLjUgMy41di00YzAtMi0xLjUtMy41LTMuNS0zLjV6Ii8+DQogICAgICA8cGF0aCBpZD0iWE1MSURfMTc1MTBfIiBkPSJNMzcgNDQuNUgxMWMtMS45IDAtMy41LTEuNi0zLjUtMy41VjcuOEM3LjUgNS45IDkgNC40IDExIDQuNGgyNmMxLjkgMCAzLjUgMS42IDMuNSAzLjVWNDFjMCAxLjktMS41IDMuNS0zLjUgMy41eiIgY2xhc3M9InN0MyIvPg0KICAgICAgPHBhdGggaWQ9IlhNTElEXzE3NTA5XyIgZmlsbD0iI2ZmZmVmMiIgZD0iTTM1LjEgNDAuNEgxMi45Yy0uNyAwLTEuMi0uNi0xLjItMS4yVjExLjZjMC0uNy42LTEuMiAxLjItMS4yaDIyLjNjLjcgMCAxLjIuNiAxLjIgMS4ydjI3LjZjMCAuNy0uNiAxLjItMS4zIDEuMnoiLz4NCiAgICAgIDxwYXRoIGlkPSJYTUxJRF8xNzUwOF8iIGZpbGw9IiNmZmYiIGQ9Ik0zNS4xIDEwLjRIMTIuOWMtLjcgMC0xLjIuNi0xLjIgMS4ydjMuOWMwLS43LjYtMS4yIDEuMi0xLjJoMjIuM2MuNyAwIDEuMi42IDEuMiAxLjJ2LTMuOWMwLS43LS42LTEuMi0xLjMtMS4yeiIvPg0KICAgICAgPHBhdGggaWQ9IlhNTElEXzE3NTA3XyIgZD0iTTM1LjEgNDAuNEgxMi45Yy0uNyAwLTEuMi0uNi0xLjItMS4yVjExLjZjMC0uNy42LTEuMiAxLjItMS4yaDIyLjNjLjcgMCAxLjIuNiAxLjIgMS4ydjI3LjZjMCAuNy0uNiAxLjItMS4zIDEuMnoiIGNsYXNzPSJzdDMiLz4NCiAgICAgIDxwYXRoIGlkPSJYTUxJRF8xNzUwNl8iIGZpbGw9IiNkYWVkZjciIGQ9Ik0yNiA4LjFjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyaC0zLjVjLS43IDAtMS4yLjYtMS4yIDEuMnYxLjljMCAuNy42IDEuMiAxLjIgMS4yaDExYy43IDAgMS4yLS42IDEuMi0xLjJWOS4zYzAtLjctLjYtMS4yLTEuMi0xLjJIMjZ6Ii8+DQogICAgICA8cGF0aCBpZD0iWE1MSURfMTc1MDVfIiBmaWxsPSIjZThmNGZhIiBkPSJNMjkuNSA4LjFIMjZjMC0xLjEtLjktMi0yLTJzLTIgLjktMiAyaC0zLjVjLS43IDAtMS4yLjYtMS4yIDEuMnYyYzAtLjcuNi0xLjIgMS4yLTEuMkgyMmMwLTEuMS45LTIgMi0yczIgLjkgMiAyaDMuNWMuNyAwIDEuMi41IDEuMiAxLjJ2LTJjLjEtLjYtLjUtMS4yLTEuMi0xLjJ6Ii8+DQogICAgICA8cGF0aCBpZD0iWE1MSURfMTc1MDRfIiBkPSJNMjYgOC4xYzAtMS4xLS45LTItMi0ycy0yIC45LTIgMmgtMy41Yy0uNyAwLTEuMi42LTEuMiAxLjJ2MS45YzAgLjcuNiAxLjIgMS4yIDEuMmgxMWMuNyAwIDEuMi0uNiAxLjItMS4yVjkuM2MwLS43LS42LTEuMi0xLjItMS4ySDI2eiIgY2xhc3M9InN0MyIvPg0KICAgICAgPHBhdGggaWQ9IlhNTElEXzE3NTAzXyIgZD0iTTE1LjQgMTYuM2g2LjIiIGNsYXNzPSJzdDMiLz4NCiAgICAgIDxwYXRoIGlkPSJYTUxJRF8xNzUwMl8iIGQ9Ik0xNS40IDM0LjRoNi4yIiBjbGFzcz0ic3QzIi8+DQogICAgICA8cGF0aCBpZD0iWE1MSURfMTc1MDFfIiBkPSJNMTUuNCAyMGgxNC41IiBjbGFzcz0ic3QzIi8+DQogICAgICA8cGF0aCBpZD0iWE1MSURfMTc1MDBfIiBkPSJNMTUuNCAyMy4zaDE0LjUiIGNsYXNzPSJzdDMiLz4NCiAgICAgIDxwYXRoIGlkPSJYTUxJRF8xNzQ5OV8iIGQ9Ik0xNS40IDI2LjloMTQuNSIgY2xhc3M9InN0MyIvPg0KICAgIDwvZz4NCiAgPC9nPg0KPC9zdmc+
  11. // ==/UserScript==
  12.  
  13. (function() {
  14. 'use strict';
  15.  
  16. // check if GPT button exists
  17. function isNewButtonAdded() {
  18. return document.getElementById("newButton") !== null;
  19. }
  20.  
  21. // inject GPT Button
  22. function injectGPT() {
  23. // Check if the button has already been added
  24. if (!isNewButtonAdded()) {
  25. var newButton = document.createElement("div");
  26. newButton.className = "btn bg-green-80 bg-green-hover r-bg-light r-bg-light-hover r-text-dark ml-2 lh-close mb-2 mb-sm-0 align-self-start";
  27. newButton.textContent = "Copy and open ChatGPT";
  28. newButton.id = "newButton";
  29.  
  30. // Add event listener to copy text and open "chat.openai.com" in a new tab
  31. newButton.addEventListener("click", function() {
  32. // Copy text from elements with class ".question-text"
  33. var questionTextElements = document.querySelectorAll(".question-text");
  34. var copiedText = Array.from(questionTextElements).map(element => element.textContent).join('\n');
  35.  
  36. // Copy text to clipboard
  37. var tempInput = document.createElement("textarea");
  38. tempInput.value = copiedText;
  39. document.body.appendChild(tempInput);
  40. tempInput.select();
  41. document.execCommand("copy");
  42. document.body.removeChild(tempInput);
  43.  
  44. // Open "chat.openai.com" in a new tab
  45. window.open("https://chat.openai.com", "_blank");
  46. });
  47.  
  48. // Insert the new button before the last div in the existing div
  49. var existingDiv = document.querySelector(".column");
  50. existingDiv.insertBefore(newButton, existingDiv.lastElementChild);
  51. }
  52. }
  53.  
  54. // wait for body to click
  55. document.addEventListener('click', function() {
  56. setInterval(injectGPT, 500);
  57. });
  58.  
  59. // remove retarded "onpaste" disable func
  60. function removePaste() {
  61. var elements = document.querySelectorAll('.answer-text');
  62. elements.forEach(function(element) {
  63. element.removeAttribute('onpaste');
  64. });
  65. }
  66. // check every .5s for new boxess
  67. setInterval(removePaste, 500);
  68.  
  69. })();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址