我看到了这段代码,我正试图决定它是如何运作的。
<SCRIPT LANGUAGE=javascript>
function SpeechMikeControl::SPMEventButton(lDeviceID, EventId) {
alert("lDeviceID=" + lDeviceID + ", EventId=" + EventId);
}
</SCRIPT>
双结肠?这是从网页上使用飞利浦语音麦克风。
知道这个双冒号是什么意思吗?这对我来说似乎是一个语法错误,但它确实有效! (至少在IE中)。
答案 0 :(得分:7)
我在Microsoft Office Infopath 2003的一些扫描手册中找到了一个模糊的参考资料。它似乎是JScript
语法:
使用双冒号作为分隔符 脚本ID和事件之间 名称
我的猜测是,它不是Internet Explorer的ECMAScript实现的一部分(或不再是其中的一部分),但它属于(或曾经属于)Microsoft Office的实现。
答案 1 :(得分:6)
这是Microsoft实施的Javascript语言的扩展。它的目的是为页面上引用的COM对象指定事件处理程序。 SpeechMikeControl
是COM(和/或ActiveX)对象的全局范围名称:
OBJECT
或其他元素,其id
属性为SpeechMikeControl
,或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是否足够好知道这是否允许,但我不希望因为将打破其他实现。