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 函数中指定命名空间,该函数本身位于 &lt;script&gt; 块内。

【问题讨论】:

内联版本中的外部花括号是否用于创建具有单个字段 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 事件等的主要内容,如果未能解决你的问题,请参考以下文章

命名空间jquery

JavaScript之命名空间模式

“JavaScript 命名空间”是啥意思? [复制]

使用 JavaScript 命名空间是不是有任何危险?

Javascript 命名空间

如何避免javascript命名空间冲突?