2012-12-21 63 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

相关问题