在新窗口中打开iframe内的链接

时间:2011-01-03 10:47:25

标签: javascript jquery html css iframe

我正在尝试在iframe中显示一个地图,其中有一个针在鼠标悬停上显示某个公司的某些信息,一旦你点击了iframe内部打开的链接就会破坏体验,所以我想知道是否可以在一个新窗口中打开iframe中的链接,而不是使用jquery或类似的东西?

我的代码是atm

http://www.jsfiddle.net/rkd59/1/

编辑:至少捕获iframe中的点击,以便我可以调整iframe的大小

6 个答案:

答案 0 :(得分:7)

您需要某种开放式API来正确执行此操作,而Eniro根据this page(瑞典语)提供的不会提供。

我建议你改用Google Maps API v3。我做了一个类似于Eniro的 example on jsFiddle

我很乐意为你提供更多帮助,所以请你离开!

答案 1 :(得分:2)

要在新窗口中弹出链接,通常会使用target="_blank"

<a href="http://www.yahoo.com" target="_blank">Go to Yahoo</a>

但是,只有在您可以修改在iFrame中显示的代码

时,这才有效

答案 2 :(得分:1)

由于此地图是在iFrame中加载的,因此无法在链接上运行任何javascript事件侦听器,也无法更改html。

答案 3 :(得分:1)

你不能(或者非常很难)使iframe内的事件影响到父页面。这是为了防止来自XSS或cross site scripting的攻击。话虽如此,如果iframe中的网站位于您自己的上,并且您想要设置一些非常棘手的ajaxing和php会话ID,也许您可以使某些工作成功,但即便如此,我也不确定。而且我不知道这是否会成为一个安全漏洞,也许其他人可以对此说话。它可能看起来像:

  1. 主页面设置会话ID,并通过get变量
  2. 将其传递给iframe网址
  3. iframe获取点击信息,并通过对服务器上脚本的ajaxing调用将其发送到Session变量。
  4. 主页然后读取(如何?)会话cookie并根据其值进行更改。
  5. 总而言之,您可能会发现使用其他方法实现您想要的内容可能会更简单,更安全。

答案 4 :(得分:1)

请尝试以下方法:

<script>
x=document.querySelectorAll("a");
for(i=0;i<x.length;i++)
{
   x[i].setAttribute("target","_blank");
}
</script>

因此所有链接都在新框架中打开。

答案 5 :(得分:0)

有一个部分解决方案

您可以在IFRAME的顶部添加一个绝对定位的DIV标记,并获取对此的点击。请参见此处以20%alpha红色着色的示例。

<强> http://www.jsfiddle.net/rkd59/6/

但是,这意味着地图以“只读模式”工作,虽然您可以捕获点击事件,但您不知道用户点击了哪个链接。