【问题标题】:(HTML/javascript) Handling a cross-domain iframe(HTML/javascript) 处理跨域 iframe
【发布时间】:2025-11-25 11:45:01
【问题描述】:

我有一个在 iframe 中显示不同网站(例如 www.cnn.com)的页面。

我想要的只是让 iframe 内的链接在父窗口中打开,而不是在框架内。

我知道出于安全原因,这通常是不可能的,这对我来说很有意义。但是,我正在处理的页面不会公开,只会在我的私人计算机上公开,如果我必须关闭某些安全功能才能使其正常工作,那没关系。

有没有办法做到这一点?

我整天都在网上搜索解决方案。如果我错过了这里或其他地方的帖子,请指出。

我在 Firefox(我正在使用)中读到,如果脚本是“签名的”(或更改了特定的配置条目),则可以在 javascript 中获得扩展权限。但是,我不知道如何利用这些扩展权限来达到我的目的……有什么提示吗?

我也会考虑不同的方法,例如根本不使用 iframe。无论采用哪种方法,我都希望能够在一个页面中嵌入几个我无法控制的网站。在任何嵌入式网站中单击的链接应在父窗口中打开。它应该是我自己的一个方便的工具。我应该说我基本上对javascript一无所知,只是边做边学。如果您可以自信地说,任何客户端方法都无法实现我想要的,那也会有所帮助。我想这样做会相当直接,例如使用 php,但如果没有必要,我不想设置网络服务器。感谢您的任何提示!

【问题讨论】:

    标签: javascript iframe cross-domain


    【解决方案1】:

    这与您要求的解决方案略有不同,但可能是解决问题的更好方法,因为它可以为您提供所需的能力,而不会损害任何正常的网络安全。

    我想知道Greasemonkey(Firefox 和其他浏览器的附加组件)是否对您来说是一个有用的解决方案,因为它允许您针对其他页面运行本地 javascript 以在本地修改它们,而不管正常的安全限制如何。因此,您可以浏览 CNN 页面中的所有链接并在需要时对其进行修改。

    要使用它,您需要将greasemonkey 插件安装到Firefox 中,编写一个以您想要的方式修改CNN.com 的脚本,将该脚本安装到Greasemonkey 中,然后将脚本定位到CNN.com 网页.我认为它应该在该站点上工作,无论它是否在 iframe 中,但如果需要,您的脚本可能会检测它是否在 iframe 中。

    【讨论】:

      【解决方案2】:

      看起来 HTML5 无缝属性将是您正在寻找的。但似乎还没有任何东西支持它......

      http://www.w3schools.com/html5/att_iframe_seamless.asp

      【讨论】: