textarea javascript 调试结果到 innerHTML 段落 "undefined"
textarea javascript debug result to innerHTML paragraph "undefined"
我正在做一个代码编辑器,几乎一切正常,我在 texarea 中键入文本并按下按钮加载一个函数,代码的结果出现在网络浏览器控制台上,我正在尝试喜欢“document.getElementById('output').innerhtml = window.eval(txtarea.value);”
但是好像不行。
function DebugInp(){
var txtarea = document.getElementById('input');
document.getElementById('output').innerHTML = window.eval(txtarea.value);//output = paragraph in html.
};
/**
*My problem is that the innerHTML is showing undefined, but when I'm getting to console,
*it appears the result.
*I'm thinking of maybe getting all of the outputs of the console, but IDK how to do it
*Kind of like: document.getElementById('output').innerHTML = console.logs?
*I am still searching but any help would be nice.
*/
提前致谢!
PS: 我更擅长前端开发,想了解更多后端所以请不要讨厌。
你正在做的事情非常不安全,有很多更好的方法来解决这个问题。但是尽管如此,您需要限制输入代码的上下文。简单地评估整个代码不会给你控制台日志。您需要为代码公开一个 API 以将输出发送到。
最小示例:
var txtarea = document.getElementById('input');
document.getElementById('output').innerHTML = window.eval(`
const console = {
log(...args) {
document.getElementById('output').innerText += '\n' + args.join(' ');
}
};
${txtarea.value}
`);
哦!!!我做到了伙计们!
只需为 console.log 创建一个新的标准函数,以便它存储我在这里找到答案的每个日志:
console.stdlog = console.log.bind(console);
console.logs = [];
console.log = function(){
console.logs.push(Array.from(arguments));
console.stdlog.apply(console, arguments);
}
var txtarea = document.getElementById('input');
window.eval(txtarea.value);
document.getElementById('output').innerHTML = console.logs;
哎呀!祝大家有个愉快的一天!
我正在做一个代码编辑器,几乎一切正常,我在 texarea 中键入文本并按下按钮加载一个函数,代码的结果出现在网络浏览器控制台上,我正在尝试喜欢“document.getElementById('output').innerhtml = window.eval(txtarea.value);” 但是好像不行。
function DebugInp(){
var txtarea = document.getElementById('input');
document.getElementById('output').innerHTML = window.eval(txtarea.value);//output = paragraph in html.
};
/**
*My problem is that the innerHTML is showing undefined, but when I'm getting to console,
*it appears the result.
*I'm thinking of maybe getting all of the outputs of the console, but IDK how to do it
*Kind of like: document.getElementById('output').innerHTML = console.logs?
*I am still searching but any help would be nice.
*/
提前致谢! PS: 我更擅长前端开发,想了解更多后端所以请不要讨厌。
你正在做的事情非常不安全,有很多更好的方法来解决这个问题。但是尽管如此,您需要限制输入代码的上下文。简单地评估整个代码不会给你控制台日志。您需要为代码公开一个 API 以将输出发送到。
最小示例:
var txtarea = document.getElementById('input');
document.getElementById('output').innerHTML = window.eval(`
const console = {
log(...args) {
document.getElementById('output').innerText += '\n' + args.join(' ');
}
};
${txtarea.value}
`);
哦!!!我做到了伙计们! 只需为 console.log 创建一个新的标准函数,以便它存储我在这里找到答案的每个日志:
console.stdlog = console.log.bind(console);
console.logs = [];
console.log = function(){
console.logs.push(Array.from(arguments));
console.stdlog.apply(console, arguments);
}
var txtarea = document.getElementById('input');
window.eval(txtarea.value);
document.getElementById('output').innerHTML = console.logs;
哎呀!祝大家有个愉快的一天!