如何解决Brython运行从Ace Editor获取的代码时出现的报错问题
Ace Editor代码被遮挡或换行时Brython运行报错问题
- 代码较短、完整展示在Ace Editor可视区域内时,Brython可正常输出运行结果
- 当代码长度变长、容器div尺寸调整导致部分代码被隐藏(例如示例中print语句的「pri」部分因代码过长被遮挡)时,Brython会报错
- 开启文本自动换行功能后,Brython仍会报错
测试用Brython与Ace Editor配置
function run() { const console = document.getElementById("console"); const runner = new BrythonRunner({ stdout: { write(content) { console.innerHTML += content; console.scrollTop = console.scrollHeight; }, flush() {} }, stderr: { write(content) { console.innerHTML += content; console.scrollTop = console.scrollHeight; }, flush() {} }, stdin: { async readline() { console.innerHTML += "\n"; console.scrollTop = console.scrollHeight; var userInput = prompt(); return userInput; }, flush() {} } }); var code = editor.getValue(); runner.runCode(code) } function run_init() { if (document.getElementById("console") != '') { document.getElementById("console").innerHTML = ''; run(); console.log(document.getElementById('editor').innerText); } else { run() } }
<button onclick="run()">run</button> <div class='editor_class' id='editor'>print('Hello World')</div> <div class='compiler_class'><textarea id='console' readonly></textarea></div> <script src="https://ajaxorg.github.io/ace-builds/src-noconflict/ace.js" type="text/javascript" charset="utf-8"></script> <script src="https://raw.githack.com/pythonpad/brython-runner/master/lib/brython-runner.bundle.js" type="text/javascript" charset="utf-8"></script> <script> var editor = ace.edit("editor"); editor.setTheme("ace/theme/vibrant_ink"); editor.getSession().setMode("ace/mode/python"); editor.setFontSize("16px"); editor.container.style.height = "100px" editor.setOptions({ enableLiveAutocompletion: true, copyWithEmptySelection: true, showGutter: true, useWrapMode: false, // wrap text to view indentedSoftWrap: false, }); </script>
内容的提问来源于stack exchange,提问作者HackNetAyush
相关产品推荐
相关产品推荐

