我被要求通过vbscript代码段“嗅探用户的windows用户名”,并且无法在tapestry(5.1.0.5)应用程序中使用它。做tapestry 5支持vbscript吗?
看来tapestry试图将vbscript解释为javascript,因此失败。
vbscript片段(如下)嵌入在一个组件中,该组件依次作为multizoneupdate的一部分在一个区域内有条件地加载。
伪TML:
<page>
<t:zone>
<t:if>
<t:mycomponent>
<vbscript />
的VBScript:
<script type="text/vbscript" language="vbscript">
Dim shell
set shell = createobject("wscript.shell")
set env = shell.environment("process")
set field = document.getElementById("windowsLoginField")
if field is nothing then
alert("no field")
else
field.value = env("username")
end if
</script>
我知道,这应该只针对IE浏览器,但其他浏览器应该优雅地失败(不运行脚本)。
当区域是在VBScript中应呈现的状态重新加载,我得到的萤火以下错误:
missing ; before statement
Dim shell
这是因为脚本是由prototypejs评价:
evalScripts: function() {
return this.extractScripts().map(function(script) { return eval(script) });
},
有没有人知道一种方法来避免原型评估这个脚本,以便它可以通过并执行为VBScript?
我注意到没有@IncludeVbScriptLibrary注解......
感谢页。
很好的答案说笑,我个人通过包括解决它脚本在页面tml中,这样它就不会被原型所破坏。 – pstanton 2011-06-20 06:24:00