我正在編寫提取Javascript塊以合併,縮小和異步執行它們的php框架。我可以在沒有eval的全局執行上下文中運行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(窗口)或類似的東西,改變我的lib中的執行上下文,這可能嗎?
thnak你但我無法改變包裝代碼 –
@Keywan Ghadami你是什麼意思? – Manu
代碼var global =「Hello World」代表其他開發人員編寫的JavaScript示例,並且應該繼續運行。即使它包裝在我的代碼中。我無法改變這些代碼,只能改變它的包裝方式。 –