2

我上传了两个网络资源,a.HTMLb.JS。在 HTML 文档中,我有一个执行脚本的部分(并且它按预期工作)将加载加载到我的表单上的 IFRAME 中。

现在,由于代码的大小,我觉得有必要对其进行重构,并且我想将一些方法从我的 HTML Web 资源的 script 标签移到单独的 JS Web 资源中。

第一步,我设置了单独的 JS Web 资源,如下所示。

function test() { alert("Success."); }

从 HTML 文档中的脚本中,我执行以下操作,因为页面似乎不知道test时出现错误。

alert("Get ready for test...");
test();
alert("Did it work?");

当然,我已将 JS Web 资源添加到表单并保存已发布。令人惊讶的是,关于这个主题的信息很少。我找到了这些链接,但它们都不完全符合我的需要,并且没有提示我如何解决手头的问题。

  • 这个链接类似于我想要实现的,但它是关于从 JS 调用 JS ,其中两者都是 Web 资源。
  • 这个链接与我想要的对角线相反,我不知道如何通过从 JS 调用 HTML来反转它,两者都是 Web 资源。

我应该纠正什么?

4

3 回答 3

2

从 Microsoft Dynamics CRM 中的 HTML 网络资源调用 javascript 网络资源中的函数

客户关系管理 2015

Javascript网络资源:

function test() { alert("Success."); }

HTML 网络资源:

window.parent.test();

客户关系管理 2016

他们现在在 iframe 中加载 HTML 网络资源,因此您无法访问外部 js 文件,但您可以访问 XRM 对象。所以你可以把函数放在这个对象上。

Javascript网络资源:

Xrm.Page.test = test;
function test() { alert("Success."); }

HTML 网络资源:

window.parent.Xrm.Page.test();
于 2018-06-27T11:04:53.647 回答
1

我认为您的 test() 函数在您的 html 文档窗口的范围内。当您从 iframe 的文档中调用它时,它会在其范围内搜索 test()。

试用

alert("Get ready for test...");
parent.window.test();
alert("Did it work?");

如果 test() 在 iframe 中定义并且您从 HTML 文档中调用它,请尝试此操作。

alert("Get ready for test...");
document.getElementById("iframeId").src ="javascript:test();"
alert("Did it work?");
于 2012-12-08T13:10:19.150 回答
1

检查您所做的以下假设:

  • 保存网络资源?
  • 发布所有更改?
  • 将资源添加到相关实体的框架中?
  • 将函数命名为hazaa
  • 叫正确的名字,即parent.window.test()

如果以上所有都是肯定的,请做三件事。

  1. 联系微软。您刚刚发现了一个严重的错误。
  2. 小心。很快就会有猪飞。
  3. 拿一件外套。天气会变得更冷。

(我的意思是你肯定错过了我提供的列表中的一些东西,你不需要联系微软,猪不会开始飞,地狱也不会冻结。)

于 2012-12-08T13:56:52.370 回答