【发布时间】:2013-05-04 00:52:58
【问题描述】:
父窗口由 my.salesforce.com 域提供,子(弹出)窗口由另一个域 visual.force.com 提供。该功能是将用户在弹出窗口中选择的值填充回父窗口。我正在使用 window.opener 与父窗口通信,但在父窗口中收到错误消息“域、协议和端口必须匹配”。
知道如何避免这种情况吗?以及从子级传递给父级的值?
-Sameer
【问题讨论】:
标签: javascript jquery salesforce
父窗口由 my.salesforce.com 域提供,子(弹出)窗口由另一个域 visual.force.com 提供。该功能是将用户在弹出窗口中选择的值填充回父窗口。我正在使用 window.opener 与父窗口通信,但在父窗口中收到错误消息“域、协议和端口必须匹配”。
知道如何避免这种情况吗?以及从子级传递给父级的值?
-Sameer
【问题讨论】:
标签: javascript jquery salesforce
您可以使用srcUp 函数解决这个问题。它不是官方 API,等等等等,但我似乎记得它被 SF 使用过,尤其是在 Service Cloud Console 周围。
https://salesforce.stackexchange.com/questions/5009/open-a-service-console-primary-tab-from-a-custom-component-module(可惜techtrekker评论中的链接已过期)。
http://salesforcedevbj.blogspot.com/2012/10/custom-links-and-buttons-in-service.html
对不起,这不是一个真正的答案,我从来没有破解过这样的东西......但至少你现在对谷歌有一线希望。还可以尝试在 salesforce.stackexchange.com 上交叉发布吗?
【讨论】:
出于安全原因,Javascript 无法跨域通信,因为它违反了同源策略。
不确定是否可行,但您可能想看看是否可以对父域上的 Web 服务进行 JSON-P 调用,该服务在服务器端设置值,然后由父页面读取.
您可以在此处阅读有关 JSON-P 的信息:
【讨论】:
我遇到了同样的问题。我认为,如果您在 Salesforce 标准编辑页面(父)上,那么 创建一个与该页面相同的visualforce编辑页面(假设页面名称为Test)。之后转到您实现此功能的对象并编辑“编辑”标准按钮,然后您将获得带有选项的 ovveride 选择 visualforce 页面测试。
如果我对你的问题的理解有误,请告诉我......
【讨论】: