ChatGPT output HTML direct

ChatGPT直接輸出HTML

  1. // ==UserScript==
  2. // @name ChatGPT output HTML direct
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.8
  5. // @description ChatGPT直接輸出HTML
  6. // @description:en ChatGPT output HTML direct
  7. // @author cat-no-war
  8. // @match https://chat.openai.com/*
  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.innerHTML;
  36. newFrame.src = "data:text/html;charset=utf-8," + encodeURIComponent(code.innerText);
  37. setInterval(()=>{
  38. if(oldText!=code.innerHTML){
  39. newFrame.src="";
  40. newFrame.src = "data:text/html;charset=utf-8," + encodeURIComponent(code.innerText);
  41. //newFrame.contentWindow.location.reload(true);
  42. }
  43. oldText=code.innerHTML
  44. },500);
  45. code.parentElement.parentElement.parentElement.appendChild(newFrame);
  46. }else if(lang="javascript"){
  47. let button = document.createElement("button");
  48. button.innerHTML="Play";
  49. oldText=code.innerText;
  50. var r=`eval(\`${code.innerText}\`);`
  51. button.setAttribute("onclick",r)
  52. eval(code.innerText);
  53. setInterval(()=>{
  54. if(oldText!=code.innerText){
  55. r=`eval(\`${code.innerText}\`);`
  56. button.setAttribute("onclick",r)
  57. eval(code.innerText);
  58. }
  59. oldText=code.innerText
  60. },500);
  61. code.parentElement.parentElement.parentElement.appendChild(button);
  62. }
  63. }
  64. }, 500);
  65. })();