【问题标题】:Confused about JavaScript contexts - crm 2011 online对 JavaScript 上下文感到困惑 - crm 2011 在线
【发布时间】:2012-11-15 22:58:20
【问题描述】:

我已覆盖案例解决按钮来调用我的自定义 JavaScript。我将调用此函数 custom_resolve_func()。这很好用。当我按下解决按钮时,custom_resolve_func() 被调用。

我在案例表单的 OnLoad 事件上附加了另一个函数。我将调用此函数 custom_onload_func()。它工作正常。当我加载表单时,会调用 custom_onload_func()。

custom_resolve_func() 和 custom_onload_func() 在同一个 JS webresource 中。

我的问题是如何让两个函数在运行时共享数据?

例如,在 custom_onload_func() 中,我为 JS 网络资源设置了一个全局变量。当我按下解决按钮并调用 custom_resolve_func() 时,我读取了相同的变量,但它好像从未在 custom_onload_func() 中设置过。如果我在声明时给它一个初始值,那就是我在 custom_resolve_func() 中读取它时得到的值。

两个函数如何共享相同的上下文?我需要 custom_resolve_func() 能够以某种方式访问​​表单上下文...

【问题讨论】:

    标签: javascript dynamics-crm dynamics-crm-2011 crm dynamics-crm-online


    【解决方案1】:

    功能区是在 IFrame 中加载的,因此您无法从表单上加载的脚本访问在功能区中加载的脚本。此外,我相信您已经加载了两个脚本。

    因此,我会尝试仅在表单上加载脚本并将模拟文件放入功能区命令定义中。

    <JavaScriptFunction Library="mock.js" FunctionName="custom_resolve_func">
    

    或者将变量存储在表单的隐藏字段中。

    【讨论】:

    • 感谢您。不确定我是否完全理解。似乎我加载了 2 个脚本。您是说 mock.js 中的 custom_resolve_func() 应该在我的 form.js 中调用 custom_resolve_func2() 并且应该可以工作吗?您能否详细说明“将变量存储在表单上的隐藏字段中”的想法?
    • @Greg 我应该说我需要分享的不仅仅是 1 个变量。我真正需要的是 custom_resolve_func() 能够在加载表单的 JS 空间内操作。我会尝试 mock.js 的想法......
    • @Greg 将此标记为带有警告的答案。通过在 mock.js 中创建 mock_func() 调用表单加载的 JS 中的 custom_resolve_func(),除了最后调用 Xrm.Page.ui.close() 来关闭表单窗口之外,一切都正常工作。 Xrm.Page.ui.close() 在 custom_resolve_func() 中调用时无效,但在 mock_func() 中调用时有效。不知道为什么。
    • 嗨。抱歉,说 mock.js 我的意思是它是不存在的脚本,只是为了引用不存在的 webresource 和另一个 webresource 中的现有函数。但主要思想是一样的,就像两个独立的窗口。 :-)
    • @Greg 可以吗?一个不存在的网络资源?知道为什么 ui.close() 必须在我的 mock.js 中才能正常工作吗?试图了解事情在这里运作的上下文......
    猜你喜欢
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 2017-05-06
    • 2014-11-28
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多