相关疑难解决方法(0)

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

我有一个Visualforce页面,嵌入在Opportunities的详细信息页面上.

在页面内是一个命令按钮,用于调用后备控制器扩展中的方法.

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

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

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


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

<script>
    window.setTimeout(testRedirect,2000);
    function testRedirect() {
        top.location.reload();
    }
</script>
Run Code Online (Sandbox Code Playgroud)

这导致Chrome记录错误:

不安全的JavaScript尝试与URL访问框架 https://na2.salesforce.com/006400000000000从框架与URL https://ab2.na2.visual.force.com/servlet/servlet.Integration?lid=066400000000000&ic=1.域,协议和端口必须匹配.

因此,Visualforce页面的域名不同.

iframe salesforce

14
推荐指数
1
解决办法
3万
查看次数

自定义按钮或使用自定义控制器链接到Visualforce页面

我有一个Visualforce页面使用自定义控制器,用于编辑机会下的多个记录.

我想创建一个从Opportunities到此Visualforce页面的自定义按钮或链接.

目前链接如下:

/apex/ExamplePage?oppId={!Opportunity.Id}
Run Code Online (Sandbox Code Playgroud)

这在开发沙箱中工作正常,但是当它作为托管包的一部分部署时,链接会断开,因为页面引用没有名称空间前缀.

我在Force.com讨论板上发现了托管包重定向问题,暗示应该可以使用$ Page来引用URL中的Visualforce页面.例如

{!URLFOR($Page.MyExamplePage,'',[objectId = campaign.id])}
Run Code Online (Sandbox Code Playgroud)

但这样做只会给我语法错误:

错误:字段$ Page.MyExamplePage不存在.检查拼写.

该帖子的另一部分建议使用Apex类和Execute Javascript来解决它.但在我看来,这只是将名称空间问题转移到了Javascript中.

如何安全地引用Visualforce页面以在托管包内外工作?

salesforce visualforce

6
推荐指数
1
解决办法
3万
查看次数

标签 统计

salesforce ×2

iframe ×1

visualforce ×1