2014-02-18 38 views
0

Well met!什么是IFrames的交互式替代方案

我正在开发类似于Windows 8瓷砖界面的项目,仅用于网站。

这个想法是,当点击一个贴图时,它会增长以填充网站(让顶部的菜单栏保持空闲),用户可以正常浏览已加载的网站。当他点击菜单栏上的一个按钮时,瓷砖就会长大。

我的方法是使用IFrame。但是这些可以通过访问站点的HTTP选项来禁用,或者通过使用一些JavaScript来测试窗口顶层。

因此,我需要一些替代IFrame的。我能够找到的最好的东西是JQuery .load(url),它只显示网站的内容,而不是使其正常可用。我的测试也很慢。

有什么我可以用的,还是我必须放弃这个想法?

提前致谢!

回答

0

来自不同来源的加载资源在客户端非常有限。你最好的选择可能是服务器端的代理(这不是一个完美的解决方案,因为它被骗子使用,仔细阅读它) - 我记得这个iPad simulator有一个假的移动Safari浏览器,它使用php simple proxy

+0

感谢您的快速回答。起初,它看起来非常有前途,但经过一段时间后,我不得不注意到很多网站不可用(尝试谷歌搜索)或者缺少交互部分,如登录表单。 – gnomgrol

+0

对。尽管我们很喜欢构建浏览器浏览器,但没有网站喜欢用户登录或向第三方代理提交任何敏感数据的想法。 – Ronny

+0

基本上,浏览器浏览器功能无法以这种方式实现。在这种情况下,感谢您的帮助! – gnomgrol

0

使用客户端技术... jQuery的.load()将使用AJAX获取资源,并通过同域同源策略(安全沙箱)所固有的XMLHttpRequest对象的限制。

iFrame会加载资源,但正如您指出的那样它有缺点。

使用服务器端技术... 如果你只有在需要要打开的瓷砖的几个网站,你可以使用服务器端技术(PHP,JSP,ASP)预装他们,把他们藏在容器对象(如div元素)中,然后以编程方式显示它们,当用户通过悬停或单击事件激活图块时。

以java为例,您可以使用java.net库打开字符串缓冲区,读取并保存网站的内容,然后将该变量添加到servlet响应中。使用JSTL你可以从响应对象输出变量。