Javascript 命名空间、onclick 事件等
Posted
技术标签:
【中文标题】Javascript 命名空间、onclick 事件等【英文标题】:Javascript Namespaces, onclick Event, et al 【发布时间】:2014-07-11 17:37:33 【问题描述】:这是吗
<input type="button" value="..."
onclick="javascript: ddwrt:GenFireServerEvent('__commit;__redirect=/Pages/Home.aspx' ) "
/>
与(功能上)相同
. . .
<script type="javascript/text>
function runIt()
ddwrt:GenFireServerEvent('__commit;__redirect=/Pages/Home.aspx' );
</script>
<body>
<input type="button" value="..."
onclick="runIt();" />
</body>
</html>
我不太明白
onclick
事件描述中术语“javascript:”的作用。我的意思是,onclick 中的默认值不是 javascript 吗?
外花括号在..."javascript: "
中的作用。
我知道“ddwrt:
”是一个命名空间,但我不知道如何在 JavaScript 函数中指定命名空间,该函数本身位于 <script>
块内。
【问题讨论】:
内联版本中的外部花括号是否用于创建具有单个字段 ddwrt 的对象,然后将 GenFireServerEvent 函数的结果分配给该对象? (该对象随后将被丢弃,所以我不知道它有什么用途,但仍然) @Bart,不,它被解析为一个语句块,其中包含一个标签 (ddwrt:
),后跟一个函数调用 (GenFireServerEvent(...)
)。请注意,用括号括住大括号或应用运算符会改变这个故事。
是因为它没有被分配给任何东西吗?这就是将其解析为对象和将其解析为块之间的区别吗?
@Bart,在我之前的评论中抢先回答:)
那么,Frédéric,这个标签的作用是什么?
【参考方案1】:
-
这是一个label,在这种情况下完全没用
他们创建了一个block,在这种情况下也没用
不,这是另一个标签,也没用
【讨论】:
你是对的,我评论的最后一部分是错误的。第三种情况也被解析为标签。 所以 Quentin, ...="javascript: GenFrSvrEv('__cmt;__redir=/Home.aspx' )" (为了这篇文章的目的而缩写)会操作相同吗?onclick="GenFireServerEvent('__commit;__redirect=/Pages/Home.aspx')"
的操作方式相同。【参考方案2】:
在这种特殊情况下(Sharepoint),这不是 javascript,它由 Sharepoint 解析并翻译为:
onclick="javascript: __doPostBack('ctl00$ctl37$g_c251e0c4_cd3d_4fc0_9028_ab565452bedd','__cancel;__redirect=https://....')"
查看结果源代码。 这就是为什么你不能在你的 javascript 代码中调用 GenFireServerEvent。
【讨论】:
以上是关于Javascript 命名空间、onclick 事件等的主要内容,如果未能解决你的问题,请参考以下文章