我有一個嵌入到Opportunities詳細信息頁面的Visualforce頁面。Visualforce頁面嵌入在需要重定向到其他頁面的詳細信息頁面中
頁面內有一個命令按鈕,用於調用後備控制器擴展中的方法。
一旦支持方法完成,我該如何將用戶重定向到另一個頁面?
我可以從該方法返回一個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頁面。
我期待以此作爲我的[CSRF安全定製解決方案的一部分按鈕鏈接到Apex方法](http://stackoverflow.com/questions/10809520/csrf-safe-custom-button-linked-to-apex-method/11006021#11006021)的問題。這可能是我需要使用apex:actionFunction與一些JavaScript來完成改變'window.top.location.href'。 – 2012-07-19 00:58:12
嗨,丹尼爾,除非有人有一些超級偷偷摸摸的策略,我認爲你會因此失去運氣 - 問題在於,嵌入式視覺頁面頁面是從不同的域提供的,所以你需要受到瀏覽器的XSS保護。希望有人證明我錯了,並找到一種方法來爲你做這個工作! – 2012-07-19 11:06:15