【问题标题】:Passing values from child window to parent window which is on another domain?将值从子窗口传递到另一个域上的父窗口?
【发布时间】:2013-05-04 00:52:58
【问题描述】:

父窗口由 my.salesforce.com 域提供,子(弹出)窗口由另一个域 visual.force.com 提供。该功能是将用户在弹出窗口中选择的值填充回父窗口。我正在使用 window.opener 与父窗口通信,但在父窗口中收到错误消息“域、协议和端口必须匹配”。

知道如何避免这种情况吗?以及从子级传递给父级的值?

-Sameer

【问题讨论】:

    标签: javascript jquery salesforce


    【解决方案1】:

    您可以使用srcUp 函数解决这个问题。它不是官方 API,等等等等,但我似乎记得它被 SF 使用过,尤其是在 Service Cloud Console 周围。

    http://boards.developerforce.com/t5/Java-Development/Issue-with-javascript-button-within-Service-Console-need-advice/td-p/290171

    http://boards.developerforce.com/t5/Visualforce-Development/Getting-quot-Not-Implemented-quot-Javascript-error-on-SrcUp/td-p/361585

    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 上交叉发布吗?

    【讨论】:

    • 感谢您的回复。我不确定在我的情况下如何使用 srcUp 函数。我在主页组件中添加了一些 javascript,它将帐户标准详细信息页面上查找的 href 覆盖到 VF 查找页面。在标准查找页面中,salesforce 实现了 top.window.opener.lookupPick() 函数来更新父窗口中的记录。现在,由于在我的情况下,父窗口 (salesforce.com) 和 Vf 页面 (.visual.force.com) 是从不同的域提供的,所以我遇到了同源策略的问题。
    • 在这种情况下,如果您向侧边栏注入一些东西,我相信您同样可以注入您自制的 srcUp / 事件侦听器,该侦听器可以在父级(实际上在侧边栏中)定义并从弹出窗口执行。 stackoverflow.com/questions/15582211/javascriptstackoverflow.com/questions/13042615/allowing。想到的另一件事是 ajax 代理,但它看起来非常核心:salesforce.stackexchange.com/questions/9989/how。正如我所说,我从来不需要使用它,我只是知道如果我不得不使用谷歌的话:/
    • 谢谢眼霜。邮件的作用就像一个魅力。这有很大帮助。现在唯一要做的就是确保 postMessage 在 IE8 中正常工作。截至目前,仅在 Chrome 上进行了测试。再次感谢!
    • 太棒了!大多数时候都是这样,“你需要谷歌来做什么”然后突然一切正常并且很容易,嗯......你会考虑发布你的(如果需要的话匿名)解决方案作为另一个答案,以便其他人可以受益? Bob Buzzard 的 VF 查找引起了很多关注 (bobbuzzard.blogspot.co.uk/2011/02/…),也许你也会出名 :)
    • Bob Buzzard 是销售团队的传奇人物。是的,你说得对,我应该知道用谷歌搜索什么。但无论如何,我将在我的博客 (jungleeforce.wordpress.com) 中分享代码,以便它可以帮助任何正在寻找此类功能的人。再次感谢眼霜。
    【解决方案2】:

    出于安全原因,Javascript 无法跨域通信,因为它违反了同源策略。

    不确定是否可行,但您可能想看看是否可以对父域上的 Web 服务进行 JSON-P 调用,该服务在服务器端设置值,然后由父页面读取.

    您可以在此处阅读有关 JSON-P 的信息:

    What is JSONP all about?

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。我认为,如果您在 Salesforce 标准编辑页面(父)上,那么 创建一个与该页面相同的visualforce编辑页面(假设页面名称为Test)。之后转到您实现此功能的对象并编辑“编辑”标准按钮,然后您将获得带有选项的 ovveride 选择 visualforce 页面测试。

      如果我对你的问题的理解有误,请告诉我......

      【讨论】:

      • Sameer 想要覆盖系统中的所有查找窗口(在标准和 VF 页面上)以打开他的自定义 VF 查找而不是标准查找。他可以覆盖编辑页面,但他会失去标准页面布局提供的很多灵活性 + 他必须为许多对象这样做!
      • 没问题,我的 Skype ID 是 Ayub.Ansari35...我可以给出一个简单的解决方案。以前我曾在 Lookup helper 项目上工作过。
      • eyescream 是对的。我想使用标准页面(编辑、详细信息、新建),但只想覆盖查找页面,因为我在许多其他对象中引用了该对象。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-16
      • 2018-12-11
      • 1970-01-01
      • 1970-01-01
      • 2011-08-02
      • 2015-11-13
      • 1970-01-01
      相关资源
      最近更新 更多