'::'(双冒号)在javascript中为事件做什么?

时间:2011-04-19 10:53:05

标签: javascript jscript

我看到了这段代码,我正试图决定它是如何运作的。

<SCRIPT LANGUAGE=javascript> 

     function SpeechMikeControl::SPMEventButton(lDeviceID, EventId) {
        alert("lDeviceID=" + lDeviceID + ", EventId=" + EventId);
     }

</SCRIPT>
双结肠?这是从网页上使用飞利浦语音麦克风。

知道这个双冒号是什么意思吗?这对我来说似乎是一个语法错误,但它确实有效! (至少在IE中)。

6 个答案:

答案 0 :(得分:7)

我在Microsoft Office Infopath 2003的一些扫描手册中找到了一个模糊的参考资料。它似乎是JScript语法:

  

使用双冒号作为分隔符   脚本ID和事件之间   名称

我的猜测是,它不是Internet Explorer的ECMAScript实现的一部分(或不再是其中的一部分),但它属于(或曾经属于)Microsoft Office的实现。

答案 1 :(得分:6)

这是Microsoft实施的Javascript语言的扩展。它的目的是为页面上引用的COM对象指定事件处理程序。 SpeechMikeControl是COM(和/或ActiveX)对象的全局范围名称:

  • 使用OBJECT或其他元素,其id属性为SpeechMikeControl,或
  • 以前在Javascript
  • 中声明的全局变量SpeechMikeControl

SPMEventButton是COM事件的名称,由SpeechMikeControl对象在谁知道什么情况下引发。

双冒号是将函数体作为处理程序连接到控件事件的指令。

答案 2 :(得分:3)

很确定这是语法错误

答案 3 :(得分:2)

正如What does ‘::’ (double colon) do in javascript?

的答案所述

::是ES2016运算符,是绑定的简写。这个答案旨在帮助那些自ES2016规范以来遇到::的人,但不适用于提出此问题的上下文。

答案 4 :(得分:0)

我很确定这不是有效的Javascript语法。

如果它在IE中工作但不在其他浏览器中工作,可能是因为IE将其视为另一种脚本语言(也许是VBScript?虽然我不记得有双冒号操作符?不知道其他语言是什么可能是。)

答案 5 :(得分:0)

问题可能不是What does ‘::’ (double colon) do in javascript?的重复,但答案是:这是语法错误。

以下内容:

function SpeechMikeControl::SPMEventButton(lDeviceID, EventId) {

表达式开头的全局上下文中的关键字 function 表示函数声明。以下必须是一个作为函数名称的标识符。名称必须是开放分组运算符'(',形式参数列表和结束分组运算符')'。因此, function ()之间只能是允许字符的单个标识符(不是保留字或未来的保留字,但这不是问题这里)。

“:”(冒号)字符是标点符号,不能出现在标识符中。因此,如果代码被视为javascript,必须导致语法错误。

也许IE有一个语言的扩展,我不知道ECMAScript是否足够好知道这是否允许,但我不希望因为打破其他实现。