gpt4 book ai didi

iframe - 嵌入在需要重定向到其他页面的详细信息页面中的 Visualforce 页面

转载 作者:行者123 更新时间:2023-12-03 22:28:26 25 4
gpt4 key购买 nike

我有一个 Visualforce 页面,它嵌入在机会的详细信息页面上。

页面内有一个命令按钮,它调用后备 Controller 扩展中的方法。

支持方法完成后,如何将用户重定向到另一个页面?

我可以从该方法返回一个 PageReference,但它只会重定向显示嵌入式 Visualforce 页面的 iframe。

理想情况下,我想刷新顶级窗口,但我担心如果嵌入式 Visualforce 页面与父窗口不在同一个域中,可能会出现跨域问题。

作为基本测试,我尝试将以下内容添加到嵌入式 Visualforce 页面:

<script>
window.setTimeout(testRedirect,2000);
function testRedirect() {
top.location.reload();
}
</script>

这导致 Chrome 记录错误:

Unsafe JavaScript attempt to access frame with URL https://na2.salesforce.com/006400000000000 from frame with URL https://ab2.na2.visual.force.com/servlet/servlet.Integration?lid=066400000000000&ic=1. Domains, protocols and ports must match.



因此,Visualforce 页面的域不同。

最佳答案

这是更多的代码,但这对我在所有浏览器中都有效,而且我没有收到任何类型的跨域错误。

Controller 扩展:

public class Opp_Ext {
private ApexPages.StandardController stdController;
public String redirectUrl {public get; private set;}
public Boolean shouldRedirect {public get; private set;}

public Opp_Ext(ApexPages.StandardController stdController) {
this.stdController = stdController;
shouldRedirect = false;
}

public PageReference doStuffAndRedirect() {
shouldRedirect = true;
redirectUrl = stdController.view().getUrl();
return null;
}
}

音频页面:
<apex:page standardController="Opportunity" extensions="Opp_Ext" >
<apex:form >
<apex:commandButton value="Do Stuff" action="{!doStuffAndRedirect}" rerender="redirectPanel" />
<apex:outputPanel id="redirectPanel" >
<apex:outputText rendered="{!shouldRedirect}">
<script type="text/javascript">
window.top.location.href = '{!redirectUrl}';
</script>
</apex:outputText>
</apex:outputPanel>
</apex:form>
</apex:page>

关于iframe - 嵌入在需要重定向到其他页面的详细信息页面中的 Visualforce 页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11552514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com