我有以下代码:
// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// ==/ClosureCompiler==
var l = window.location;
var s = 'hash';
l[s] = 'whatever i need now';
使用谷歌闭包编译器(高级模式)编译,如下所示:
window.location.hash="whatever i need now";
但在这种情况下,我真的需要它继续在编译代码中使用l[s]= ...
。
有没有办法告诉编译器继续使用var或忽略几行?
答案 0 :(得分:3)
使用junos脉冲使哈希函数正常工作是一个小小的攻击。</ p>
我很难相信黑客是必要的,但是:
// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// ==/ClosureCompiler==
eval(
"var l = window.location;\n" +
"var s = 'hash';\n" +
"l[s] = 'whatever i need now';\n"
);
* hack * * cough * : - )
或者:
// ==ClosureCompiler==
// @output_file_name default.js
// @compilation_level ADVANCED_OPTIMIZATIONS
// ==/ClosureCompiler==
sessionStorage.x = "hash";
window.location[sessionStorage.x] = 'whatever i need now';