我有一个复杂的、生成的 Javascript 文件(它由 GWT 编译器生成),我需要能够以编程方式对此进行更改并输出文件的“清理”版本。特别是,我有:
function bookmark(){
// lots-o-javascript
var M=Vb+s+I+Wb;n.write(Xb+Yb+Zb+$b+_b+ac+bc+$b+_b+cc+dc+ec+M+fc+gc+hc+ic)
}
bookmark();
未经混淆,函数内部如下所示:
var compiledScriptTag = '"<script src=\\"' + base + strongName + '.cache.js\\"><\/scr" + "ipt>"';
$doc_0.write('<scr' + 'ipt><!-' + '-\n' + 'blah blah blah' + 'document.write(' + compiledScriptTag + ');' + '\n-' + '-><\/scr' + 'ipt>');
所以我需要做的是在一个 Java servlet 中,将上面两行转换为等价于:
eval('blah blah blah');
document.body.appendChild(document.createElement('script')).src=base + strongName + ".cache.js";
解析和重新排列这个 Javascript 文件的最佳选择是什么?我应该研究一下 Rhino,它是否能够为这些提供句柄(以及使用 $doc.write 编写的嵌套 Javascript)?任何想法,将不胜感激。