Here我问了一个关于通过XMLHttpRequest动态加载脚本时引发的异常的问题(换句话说,当通过eval
执行时)
在一个相关的问题中,我想知道是否动态加载脚本是开始时被认为是不好的做法。在我的特定情况下,我有一个HTML Canvas元素,而不是加载所有可能的形状,我想动态地获取它们,而无需重新加载页面,并在返回时执行它们。我遇到的问题是,如果与该形状相关联的代码不正确,则显示的错误消息不是很有用(表示eval
语句的位置,而不是错误的语句)。是否有另一种方法可以从服务器动态获取代码并执行它,同时在异常发生时更好地通知异常的位置。
答案 0 :(得分:2)
如果要加载脚本,请使用<script>
元素。如果要动态加载脚本,请动态创建<script>
元素。
var script = document.createElement('SCRIPT');
script.src = "<url to load>";
document.getElementsByTagName("HEAD")[0].appendChild(script);
不能保证与同步XHR的eval
同步,但理想情况下,您需要构建代码以利用异步。
答案 1 :(得分:1)
添加Mike的答案,如果你想要包括脚本标签在内的良好的调试器支持可能是要走的路,因为那是调试器用来处理的问题。您需要注意的与eval的主要区别是:
如果脚本已修复,您还可以考虑通过包含脚本标记并根据需要进行部署来调试它们。