作为构建执行用户文本输入的客户端文本编辑器的一部分, 它创建一个输入表单并等待提交事件然后返回值以继续进一步执行
function input(string) {
let id = string.replace(/ /g,'')
const inputForm = `<form id=${id}><input placeholder=${string} type="text" name="data"></form>`
$('#preview').append(inputForm)
addInputDesk(id).then(e=>{
console.log(e)
return e
})
}
function addInputDesk(id){
return new Promise ((resolve, reject)=>{
let element = document.getElementById(id)
element.addEventListener("submit",(e)=>{
e.preventDefault()
console.log("got the value")
resolve(e.target.data.value)
}, {once : true})
})
}
然后将所有字符串传递给
eval()
eval("input('Enter your js code')")
但是
eval()
甚至在输入之前就开始执行了。
我知道在 eventListener 中使用eval()
很容易,但它是 javascript 的 jupyter notebook 替代品。
有时用户可以输入
let x = 10
console.log(input(x+1))
所以需要这样执行
eval("let x = 'hello'; console.log(input(x))")
所以我面临的主要问题是
eval()
在输入之前就已经执行了。
我希望
eval()
或 new Function()()
等待异步等待函数的值