从HTML IFRAME调用JS函数(两个Web资源)

时间:2012-12-08 12:56:12

标签: javascript html iframe dynamics-crm-2011

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

现在,由于代码的大小,我觉得有必要重构它,我想将我的HTML Web资源的脚本标记中的一些方法移出到单独的JS Web资源。

在第一步,我按如下方式设置了单独的JS Web资源。

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

从HTML文档中的脚本执行以下操作,得到错误,因为 test 似乎不为页面所知。

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

我已经将JS网络资源添加到表单并保存发布,当然。关于这个主题的信息很少令人惊讶。我找到了这些链接,但没有一个与我需要的完全匹配,也没有提示如何处理手头的问题。

  • This link类似于我想要实现的目标它是关于从JS调用JS ,两者都是网络资源。
  • This link与我想要的对角线相反我不知道如何通过调用来自JS的 HTML 来反转它,这两者都是网络资源。

我应该纠正什么?

3 个答案:

答案 0 :(得分:2)

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

CRM 2015

Javascript网络资源:

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

HTML网络资源:

window.parent.test();

CRM 2016

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

Javascript网络资源:

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

HTML网络资源:

window.parent.Xrm.Page.test();

答案 1 :(得分:1)

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

试试

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

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

alert("Get ready for test...");
document.getElementById("iframeId").src ="javascript:test();"
alert("Did it work?");

答案 2 :(得分:1)

检查以下假设:

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

如果到上面的所有,请做三件事。

  1. 与Microsoft联系。你刚刚发现了一个严重的错误。
  2. 小心。 很快就会成为猪。
  3. 穿上外套。它会变得更冷。
  4. (那个,我的意思是你肯定错过了我提供的列表中的某些内容,而且你不需要联系微软,猪也不会开始飞,地狱赢了不要冻结。)