闭包编译器高级和服务器端注入的Javascript
Closure Compiler Advanced and Server-side injected Javascript
myVariable = "<%=myVar%>"
if ( myVariable == "Y" ) doSomething;
else doSoemthingElse;
我正在修改代码以在高级模式下编译。 使用 JSP/ASP/PHP/等修改 Javascript 来注入变量是相当普遍的。我能想到的处理这个问题的方法包括使用:
全局变量
myVariable = window["myVariable"];
评估
myVariable = eval('"<%=myVar%>"');
使用预处理/后处理脚本替换,
作为函数变量传递
function exposedFunction(myVariable){/* stuff */}
或传递对象并按名称访问属性
如果有某种方法可以将变量注释为未知变量,即使它被定义为字符串,或者欺骗编译器这样想,那就太好了。
也许更好的方法是为嵌入式Javascript创建一个处理所有这些事情的预/后处理脚本?
编辑:搜索内联变量可能很乏味,甚至更糟的是,嵌入在内联脚本中的 <% %> 代码段和 html 标记中的 onclick 事件可能更复杂。
最好的推荐方法是什么?
如果可能的话,我希望能够内联 <%=myVar%> 字符串,以便输出变为
if("<%=myVar%>"=="Y")doSomething;else doSoemthingElse
但是,如果不可能,是否建议创建一个构建前/后工具,只使用全局变量,使用函数,或者只是将其视为情境?
Google自己似乎在某些地方将内联变量注入到他们的内联Javascript中。也许他们有一个构建前/构建后的工具?
在选择方法时,我应该考虑哪些主要考虑因素? 我只能想到时间/精力投资。这只是一个过于努力优化的情况吗?我应该只提取 <%%> 的东西并将它们放在全局变量中吗?
如果直接在字符串中使用 <%...%>,你必须担心编译器是否会将它们视为常量:
"<%X%>" === "<%Y%>">
将在编译时计算。类似地,"如果('<%Foo%>'(..."等价于"if (true( ...",因此通常直接使用替换是不明智的。
对代码进行预处理,以便以对编译安全的方式替换替换它们,这似乎是合理的:
" +eval('"<%X%>"'( + ">
但是,如果您使用源映射,则很棘手。
- 注入Javascript以选择具有指定值的所有单选按钮
- 在表单上注入javascript以发送post请求
- 动态注入javascript文件-为什么大多数示例都附加到头上
- 从 Meteor 模板注入 JavaScript
- 注入javascript代码的正确方式
- Html注入javascript代码
- 如何在不使用脚本标记的情况下注入javascript
- 使用C#在BHO中注入javascript-如何正确地转义字符串
- 我们如何将PHP变量注入Javascript
- document.write 注入 javascript 的计时
- 通过浏览器扩展注入 JavaScript
- 在 WebView 完成从以前的 JavaScript 注入加载后,在 Android 中注入 JavaScript
- 在服务器上注入 JavaScript 代码
- 将 PHP 数据注入 JavaScript 代码
- 样式注入Javascript事件
- 从c#中的代码后面向链接按钮注入JavaScript
- 在匿名函数中注入JavaScript变量作为值
- 从Chrome扩展在页面中注入Javascript:并发问题
- asp.net我可以将配置设置注入javascript吗
- WebBrowser注入Javascript将焦点设置为第一个输入框