【发布时间】:2015-10-20 10:37:52
【问题描述】:
我正在编写 php 框架,它提取 Javascript 块以异步合并、缩小和执行它们。
所以我喜欢延迟 Javascript 代码的执行,为此我将 javascript 包装在里面
MyLib.then(function(){
//orignial code from the templates....
}
这很好用,除非包装的代码需要创建全局变量 (我不是包装代码的作者,所以我不想修复该代码) 相反,我喜欢在全局执行上下文中运行该代码。
例如:
//excample code not within my controle
var global="Hello World";
会变成:
MyLib.then(function(){
//excample code not within my controle
var global="Hello World";
}
现在的解决方案是将javascript放入一个字符串,然后
MyLib.then(function(){
$.globalEval("var global=\"Hello World\"";");
}
或者在我的库中使用 globalEval 调用
MyLib.then("var global=\"Hello World\"";")
但我想坚持使用可读性更好的版本,这对于框架的用户来说也更容易调试。
MyLib.then(function(){
var global="Hello World";
}
并通过使用更改我的库中的执行上下文 callback.call(window) 之类的,可以吗?
【问题讨论】:
标签: javascript executioncontext