-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathscript.js
More file actions
85 lines (68 loc) · 3.02 KB
/
Copy pathscript.js
File metadata and controls
85 lines (68 loc) · 3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
document.addEventListener('DOMContentLoaded', () => {
const dHtml = document.getElementById('d_html');
const dScript = document.getElementById('d_script');
const dPage = document.getElementById('d_page');
const sBody = document.getElementById('s_body');
const sScript = document.getElementById('s_script');
const sConsole = document.getElementById('s_console');
const bHtml = document.getElementById('b_html');
const bScript = document.getElementById('b_script');
const bPage = document.getElementById('b_page');
const tHtml = document.getElementById('t_html');
const tScript = document.getElementById('t_script');
bHtml.disabled = false;
bScript.disabled = false;
bPage.disabled = false;
bHtml.onclick = ()=>{borraConsola(); cambiarPantalla(dHtml)};
bScript.onclick = ()=>{borraConsola();cambiarPantalla(dScript)};
bPage.onclick = ()=>{cambiarContenido(); cambiarPantalla(dPage)};
function cambiarPantalla (pantalla) {
dHtml.hidden = true;
dPage.hidden = true;
dScript.hidden = true;
pantalla.hidden = false;
};
function cambiarContenido(){
sBody.innerHTML = tHtml.value;
let antiguoScript = document.getElementById('s_script');
if (antiguoScript) {antiguoScript.remove();}
let nuevoScript = document.createElement('script');
nuevoScript.id = 's_script';
nuevoScript.textContent = `(function() {${tScript.value}})();`;
document.body.appendChild(nuevoScript);
};
function borraConsola(){
sConsole.innerHTML = "";
}
// Guarda los manejadores de eventos originales fuera de la función
let oldLog = console.log;
let oldError = console.error;
let oldOnError = window.onerror;
console.log = function (message) {
sConsole.innerHTML += '<br>' + message;
oldLog.apply(console, arguments);
sConsole.scrollTop = sConsole.scrollHeight;
};
console.error = function (message) {
sConsole.innerHTML += '<br>' + message;
oldError.apply(console, arguments);
sConsole.scrollTop = sConsole.scrollHeight;
};
window.onerror = function(message, source, lineno, colno, error) {
sConsole.innerHTML += '<br>' + message;
sConsole.scrollTop = sConsole.scrollHeight;
};
function tabulaciones(e) {
if (e.key === 'Tab') {
e.preventDefault(); // Evita que el foco salte al siguiente elemento
const start = this.selectionStart;
const end = this.selectionEnd;
// Inserta la tabulación en la posición actual del cursor
this.value = this.value.substring(0, start) + ' ' + this.value.substring(end);
// Coloca el cursor después de la tabulación
this.selectionStart = this.selectionEnd = start + 3;
}
}
document.getElementById('t_html').addEventListener('keydown', tabulaciones);
document.getElementById('t_script').addEventListener('keydown', tabulaciones);
});