0

好的。这个标题对我来说听起来很拗口,所以让我把它分解一下。

我正在使用 crm-global.js openStdDlg 方法打开一个模式对话框。

openStdDlg("myPage.aspx?" + qs.toString(), null, screen.height, screen.width, true, false, "maximize:yes;minimize:yes");

这样做的目的是在可以最大化的新窗口中打开 myPage。myPage 显示在 MS CRM 内部的 iFrame 中,并且很难在较小的屏幕上使用。

我有 3 个使用此 iFrame 的不同实例。在其中 2 个实例中,我可以简单地在 myPage 中包含一个保存按钮,当 myPage 关闭时,我只需刷新原始 myPage 即可查看新保存的内容。最后一个问题页面无法从 myPage 进行保存,因为需要在作为父页面一部分的保存中包含更多信息。

我需要的:

  1. 无论对话框如何关闭,我都需要能够将对话框中的字符串返回到父页面。
  2. 该字符串可能长达 100k 字符。

我在左外野很远吗?有没有更好的办法?我什至可以传回这么大的字符串吗?想法、意见、粗鲁言论?

4

1 回答 1

0

在调用应该使用window.openDialog的引擎盖下,据我所知,返回值没有任何限制。但是,假设您使用的是 CRM 2011,并且在某些时候您可能想要迁移到 UR 12(如果您还没有),您应该知道window.openDialog并非所有浏览器都支持。

此外,不仅仅是通过查询字符串将值传递给对话框,实际上还有一个额外的参数,您可以将参数数组传递给。我相信您传入的第二个参数null是额外的参数。通过 window.openDialog 调用,可选参数数组最后传入如下:

openDialog("http://example.tld/zzz.xul", "dlg", "", "pizza", 6.98);

然后可以像这样访问:

var food  = window.arguments[0];
var price = window.arguments[1];

就像我提到的那样,我认为没有限制,但这是您可以在对话中获取更多信息的另一种方式。

于 2013-04-26T14:22:30.183 回答