标签: jscript

从JScript代码调用VB编写的函数(经典ASP)

目前我必须处理用VB编写的遗留系统.我对VB和ASP不太满意,所以我决定用JScript编写这个系统的新代码.

但是,这两种语言之间的互操作性存在一些问题:即,当我试图调用在<script language="vbscript">tag中声明的某个函数时,它会因" Object expected "错误而失败(如果页面语言是VBScript),反之亦然.

即,以下代码:

inc.asp

<script language="vbscript" runat="server">
Sub VBTestFunction(Message)
    Response.Write "VBTestFunction: " & Message
End Sub
</script>
<script language="javascript" runat="server">
function JSTestFunction(Message) {
    Response.Write("JSTestFunction: " + Message);
}
</script>
Run Code Online (Sandbox Code Playgroud)

testjs.asp

<%@ Language="JavaScript" %>
<!-- #include file="inc.asp"-->
<script language="javascript" runat="server">
    VBTestFunction("from javascript");
    JSTestFunction("from javascript");
</script>
<script language="vbscript" runat="server">
    Call VBTestFunction("from vbscript")
    Call JSTestFunction("from vbscript")
</script>
Run Code Online (Sandbox Code Playgroud)

失败,出现以下错误:

VBTestFunction: from vbscript
Microsoft VBScript runtime error '800a000d'
Type mismatch: 'JSTestFunction'
/test.asp, line 9
Run Code Online (Sandbox Code Playgroud)

(如果我对特定行进行评论,其他三个语句将正常工作); 将页面语言设置为VBScript

<%@ Language="VBScript" %> …
Run Code Online (Sandbox Code Playgroud)

vbscript asp-classic jscript

6
推荐指数
1
解决办法
1万
查看次数

在Excel VBA中解析JSON对象数组

我知道在几次之前已经提出并回答了类似的问题: 在Excel VBA中解析JSON, Excel VBA:解析的JSON对象循环

但是,如果我尝试访问返回对象中的数组,则上述解决方案不起作用.我以下列格式从Google Translate API收到JSON对象:

"{
"sentences":[
    {
        "trans":"Responsibility\n",
        "orig":"??",
        "translit":"",
        "src_translit":"Zérèn"
    },
    {
        "trans":"Department",
        "orig":"??",
        "translit":"",
        "src_translit":"Bùmén"
    }
],
"src":"zh-CN",
"server_time":86
Run Code Online (Sandbox Code Playgroud)

}"

我希望能够将两个翻译的句子作为句子(0)和句子(1)来访问.我可以使用之前帖子中的GetProperty()方法来检索句子对象,但我无法访问其成员,因为它是JScriptTypeInfo类型的对象,而不是数组.

我试图使用类似于此处描述的方法将句子对象转换为JScript中的数组:如何在javaScript和VBA之间传递数组.出于某种原因,我只能让它返回数组的第一个值.

最好的方法是什么?

javascript excel vba json jscript

6
推荐指数
1
解决办法
1万
查看次数

另一个javascript数组字母排序很难

我有一个array看起来像这样,我怎么能按字母顺序排序而不丢失密钥?

var items = [
  { 11: 'Edward' },
  { 12: 'Sharpe' },
  { 13: 'Alvin' }
];
Run Code Online (Sandbox Code Playgroud)

javascript arrays sorting alphabetical jscript

6
推荐指数
2
解决办法
70
查看次数

在经典 asp 中使用服务器端 javascript:“this”有什么问题?

类似:在经典的 ASP/Javascript 中将对象插入全局范围


尝试开始在经典 ASP 中使用 javascript。不过,这似乎有些“陷阱”:有这方面经验的任何人都可以告诉我“Blah2”代码是怎么回事?似乎它“应该”起作用,但我对“this”的使用似乎有问题......

<script language="javascript" runat="server">

 var Blah = {};
 Blah.w = function(s){Response.write(s);}

 Blah.w('hello'); //this works...


 var Blah2 = function(){
     this.w = function(s){Response.write(s);} 
     //line above gives 'Object doesn't support this property or method'
     return this;
 }();

 Blah2.w('hello');

</script>
Run Code Online (Sandbox Code Playgroud)

感谢您的任何指点

蒂姆

javascript asp-classic jscript

5
推荐指数
1
解决办法
6923
查看次数

获取在 Windows Script Host 中运行的 JScript 错误的行号

说,我有以下代码,我使用 Windows Script Host 作为 .JS 文件运行:

try
{
    ProduceAnError();
}
catch(e)
{
    //How to get an error line here?
}
Run Code Online (Sandbox Code Playgroud)

有没有办法知道发生错误(异常)的错误行?

wsh jscript

5
推荐指数
1
解决办法
1635
查看次数

使用 jsdoc 记录 javascript 构造函数的返回

我有一个返回构造函数的 javascript 函数(请参阅下面的代码示例)。我将如何使用 jsdoc 的 @returns 标签来记录这一点。执行 @returns {MyConstructor} 似乎不正确,因为这意味着我返回的是“MyConstructor”的实例而不是构造函数本身,对吗?

function MyConstructor() {
    var self = this;

    self.myFunction = function() {
        return true;
    };

    self.getMyFunctionResult = function() {
        return self.myFunction();
    };
}

/**
 * @returns {?} A constructor that will be instantiated
 */
function getConstructor() {
    return MyConstructor;
}

var constructor = getConstructor();
var instance = new constructor();
Run Code Online (Sandbox Code Playgroud)

javascript documentation jsdoc jscript jsdoc3

5
推荐指数
1
解决办法
4995
查看次数

如何通过批处理文件控制我的计算机主音量?

我有以下批处理代码。但是,此代码只会调高我的 PC 音量,但我也想调低我的音量。我怎样才能做到这一点?

@if (@a==@b) @end /*

:: Batch portion

@echo off

cscript /e:jscript "%~f0"

:: JScript portion */

var shl = new ActiveXObject("WScript.Shell");
for (var i = 0; i < 5; i++) {
    shl.SendKeys(String.fromCharCode(0xAF));
}
Run Code Online (Sandbox Code Playgroud)

volume batch-file jscript

5
推荐指数
1
解决办法
2万
查看次数

JScript:如何运行外部命令并获得输出?

我正在使用cscript.exe运行我的JScript文件.在脚本中,我需要调用外部控制台命令并获取输出.

尝试:

var oShell = WScript.CreateObject("WScript.Shell");
var oExec = oShell.Exec('cmd /c dir');
WScript.Echo("Status "+oExec.Status);
WScript.Echo("ProcessID "+oExec.ProcessID);
WScript.Echo("ExitCode "+oExec.ExitCode);
Run Code Online (Sandbox Code Playgroud)

var oShell = WScript.CreateObject("WScript.Shell");
var ret = oShell.Run('cmd /c dir', 1 /* SW_SHOWNORMAL */, true /* bWaitOnReturn */);
WScript.Echo("ret " + ret);
Run Code Online (Sandbox Code Playgroud)

但没有运气:该命令运行(最有可能)没有错误,但我没有输出.请注意'cmd/c dir'这里只是一个示例,以确保我得到任何输出.

那么,我该怎么做呢?

更新: 我试图将此/sf/answers/425121931/转换为JScript,但也没有运气:

var oShell = WScript.CreateObject("WScript.Shell");
var oExec = oShell.Exec('cmd /c dir');
var strOutput = oExec.StdOut.ReadAll;
WScript.Echo("StdOut "+strOutput);

var strOutput = oExec.StdErr.ReadAll;
WScript.Echo("StdErr "+strOutput);
Run Code Online (Sandbox Code Playgroud)

该错误是Microsoft JScript runtime error: Object doesn't support …

windows cmd wsh jscript

5
推荐指数
1
解决办法
1万
查看次数

Microsoft游标引擎错误'80040e21'多步操作生成错误.检查每个状态值

我正在看一下在VB6和Active Server Pages(JScript)中使用90年代编写的旧Web应用程序.应用程序从数据库中检索一些数据并将其存储在用于更新的记录集中.当它尝试更新字段时(见下文),它会出现'80040e21'错误.

rsSave.Fields('text') = Request.Form('strText').Item(i); // this line fails
Run Code Online (Sandbox Code Playgroud)

我检查了字段的类型,它是adVarWChar(202).我检查了'text'字段的大小是2000,比从表单中提取的大.我检查了所有字段的状态,它们都是adFieldOK(0).换句话说,通常出现此错误的任何常见嫌疑人都可以.

正在创建,填充然后返​​回记录集的COM +对象正在执行以下操作:

 'Initialize command object
Set oCmd = CreateObject("ADODB.Command")

With oCmd
    .CommandType = adCmdText
    .CommandText = strsql
End With

Set cn = CreateObject("ADODB.Connection")

'Open connection to database
cn.Open strConn
oCmd.ActiveConnection = cn

Set rs = CreateObject("ADODB.Recordset")

     With rs
        Set .Source = oCmd
        .LockType = adLockBatchOptimistic
        .CursorLocation = adUseClient
        .CursorType = adOpenStatic
        .Open
        Set .ActiveConnection = Nothing
       End With
Run Code Online (Sandbox Code Playgroud)

我尝试使用adLockOptimistic,但没有运气.

最后但并非最不重要的是,这个应用程序最初使用的是旧的Microsoft OleDb for Oracle,它不再与Windows Server 2008兼容.我们不得不使用新的提供程序,从那时起需要调整一些东西才能正常工作.

有任何想法吗?

vb6 com+ ado asp-classic jscript

5
推荐指数
1
解决办法
1600
查看次数

从javascript运行bat文件

我正在尝试使用 javascript 运行 bat 文件。我试过使用 powershell,但它似乎无法正常工作。这是我试过的代码:

var oShell = WScript.CreateObject("WScript.Shell");
oShell.Exec("D:");
oShell.Exec("cd dir");
oShell.Exec("start user.bat");
Run Code Online (Sandbox Code Playgroud)

我也试过:

var oShell = WScript.CreateObject("WScript.Shell");
oShell.Exec("start D:\dir\user.bat");
Run Code Online (Sandbox Code Playgroud)

有时它会运行,有时我会收到这些错误“预期的十六进制数字”、“访问被拒绝”。我真的很困惑。我想要做的就是从一个 javascript 文件执行一个 bat 文件。

任何人都知道该怎么做?谢谢!

javascript wsh batch-file jscript

5
推荐指数
1
解决办法
4万
查看次数