2012-12-21 60 views
1

在iframe中,我將src設置爲包含Silverlight Web部件的頁面,但它不會生成任何錨點元素,但是在Silverlight Web部件上有我們可以點擊,他們將重定向頁面到一個新的網址。將iframe中的Silverlight Web部件鏈接強制爲在父窗口中打開

問題是url始終在iframe而不是父窗口中打開。我嘗試了以下幾件事:

<base target="_search" /> 
<base target="_top" /> 
<base target="_parent" /> 

我的iframe頁面<head></head>內沒有""/,但沒有奏效。

Silverlight是一個Sharepoint組件,所以我無法更改它或查看代碼以瞭解它如何打開鏈接,所以我無能爲力。

我想知道是否有任何其他暴力方式強制在父窗口中打開鏈接?謝謝你的幫助。

+1

你可以嘗試重新加載每個時間的JavaScript IFRAME元素的含量發生變化的主要頁面上,如果這種方法可行:http://stackoverflow.com/questions/2429045/iframe-src-change-事件檢測 – vorrtex

+0

@vorrtex謝謝你,這個解決方案激發了我一個不是很乾淨的解決方案。在'onload'事件之後,我將'top.window.location.href'的url設置爲iframe的'this.contentWindow.location'。但是,當我更改頂層窗口的loacation時,頁面已經加載,所以對用戶來說不是很好。你有一個想法如何在'onload'之前獲得重定向url?謝謝! – wceo

+0

如果您有權訪問Silverlight Web部件的代碼,那將是可能的。您可以處理單擊事件並調用JavaScript代碼。如果您無法訪問,則可以進行某種逆向工程並重新編譯該webpart。這是唯一的方法。 – vorrtex

回答

2

如果這是我一直在處理的相同問題(在iFrame內的sharepoint中添加組織瀏覽器),這可能會有所幫助。在包含silverlight Web部件的頁面上,通過不同頁面上的iFrame查看,我重寫了silverlight使用的window.open函數來更改url。下面我更改父窗口的URL,以便後續導航在主窗口中進行,並且iframe對用戶完全透明。

這可能對你有用,還沒有嘗試過,但我假設你一旦到達頂部框架就能找到你的其他iframe。這在我的情況下也是跨域。

<script> 
//Window.open override - catches HTMLWindow.Navigate from silverlight hyperlink 
window.open = function (open) { 
    return function (url, name, features) { 
     window.top.location = url; 
     return false; 
    }; 
}(window.open); 
</script> 
+0

謝謝!!!!組織瀏覽器正是那個東西我正在努力!!!我不知道HTMLWindow.Navigat使用window.open。非常感謝你! – wceo

相關問題