ChatGPT output HTML direct

ChatGPT直接輸出HTML

Fra 10.03.2023. Se den seneste versjonen.

  1. // ==UserScript==
  2. // @name ChatGPT output HTML direct
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.6
  5. // @description ChatGPT直接輸出HTML
  6. // @description:en ChatGPT output HTML direct
  7. // @author cat-no-war
  8. // @match https://chat.openai.com/chat
  9. // @icon https://www.google.com/s2/favicons?sz=64&domain=openai.com
  10. // @grant none
  11. // @license MIT
  12. // ==/UserScript==
  13.  
  14. (function() {
  15. 'use strict';
  16.  
  17. setInterval(function(){
  18. var codes= document.querySelectorAll("code:not([add_frame])")
  19. for(let i=0;i<codes.length;i++){
  20. let code=codes[i];
  21. //wait completed
  22. let pre=code.closest("pre");
  23. if(pre==null){
  24. code.setAttribute("add_frame",true);
  25. continue;
  26. }
  27. //if(codeParentIndex==codeParentLength-1)continue;
  28. code.setAttribute("add_frame",true);
  29. let lang=code.parentElement.parentElement.children[0].children[0].innerText;
  30. let oldText;
  31. if(lang=="html" || lang=="php"){
  32. let newFrame=document.createElement("iframe");
  33. newFrame.style.width="100%";
  34. newFrame.style.height="512px";
  35. oldText=code.innerText;
  36. newFrame.src = "data:text/html;charset=utf-8," + encodeURIComponent(code.innerText);
  37. setInterval(()=>{
  38. if(oldText!=code.innerText){
  39. newFrame.src = "data:text/html;charset=utf-8," + encodeURIComponent(code.innerText);
  40. newFrame.contentDocument.location.reload(true);
  41. }
  42. oldText=code.innerText
  43. },500);
  44. code.parentElement.parentElement.parentElement.appendChild(newFrame);
  45. }else if(lang="javascript"){
  46. let button = document.createElement("button");
  47. button.innerHTML="Play";
  48. oldText=code.innerText;
  49. var r=`eval(\`${code.innerText}\`);`
  50. button.setAttribute("onclick",r)
  51. eval(code.innerText);
  52. setInterval(()=>{
  53. if(oldText!=code.innerText){
  54. r=`eval(\`${code.innerText}\`);`
  55. button.setAttribute("onclick",r)
  56. eval(code.innerText);
  57. }
  58. oldText=code.innerText
  59. },500);
  60. code.parentElement.parentElement.parentElement.appendChild(button);
  61. }
  62. }
  63. }, 500);
  64. })();