Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
tapestry 5支持vbscript吗?_Vbscript_Tapestry - Fatal编程技术网

tapestry 5支持vbscript吗?

tapestry 5支持vbscript吗?,vbscript,tapestry,Vbscript,Tapestry,我被要求通过vbscript代码段“嗅探”用户的windows用户名,但在tapestry(5.1.0.5)应用程序中很难做到这一点 tapestry似乎试图将vbscript解释为javascript,因此失败了 vbscript代码段(如下)嵌入在组件中,该组件又作为multizoneupdate的一部分在区域内有条件地加载 伪tml: <page> <t:zone> <t:if> <t:mycompo

我被要求通过vbscript代码段“嗅探”用户的windows用户名,但在tapestry(5.1.0.5)应用程序中很难做到这一点

tapestry似乎试图将vbscript解释为javascript,因此失败了

vbscript代码段(如下)嵌入在组件中,该组件又作为multizoneupdate的一部分在区域内有条件地加载

伪tml:

<page>
    <t:zone>
        <t:if>
            <t:mycomponent>
                <vbscript />
这是因为脚本由prototypejs进行评估:

evalScripts: function() {
    return this.extractScripts().map(function(script) { return eval(script) });
}, 
是否有人知道一种避免原型评估此脚本的方法,以便它能够通过并作为vbscript执行

我注意到没有@IncludeVbScriptLibrary注释


谢谢,p.

Tapestry从原型继承了这个问题。一种解决方案是修补prototype ExtractScript和EvalScript,以便它们在看到vbscript时执行您想要的操作

这段代码可以工作(在IE7和Chrome中进行了测试),但它可以变得更灵活(例如,不使用类型键,而不是语言键)


String.prototype.extractScripts=函数(){
var matchAll=新RegExp(Prototype.ScriptFragment,'img');
var matchOne=new RegExp(Prototype.ScriptFragment,'im');

var matchVBScript=new RegExp('回答得好,josh,我个人通过将脚本包含在页面tml中来解决它,这样就不会被原型所评估。
missing ; before statement
Dim shell 
evalScripts: function() {
    return this.extractScripts().map(function(script) { return eval(script) });
}, 
<script type="text/javascript">

String.prototype.extractScripts = function() {
    var matchAll = new RegExp(Prototype.ScriptFragment, 'img');
    var matchOne = new RegExp(Prototype.ScriptFragment, 'im');

    var matchVBScript = new RegExp('<script.*type=(["\'])text\/vbscript\\1');

    return (this.match(matchAll) || []).map(function(scriptTag) {
      return [matchVBScript.match(scriptTag), (scriptTag.match(matchOne) || ['', ''])[1]];
    });
  }

String.prototype.evalScripts = function() {
    return this.extractScripts().map(function(script) { 
      // if it's vbscript and we're in IE then exec it.
      if ( script[0] && Prototype.Browser.IE ) return execScript(script[1], "VBScript");

      // if it's not vbscript then eval it    
      if ( !script[0] ) return eval(script[1]);

    });
}
</script>