我创建了一个与相当流行的音乐零售商一起使用的工具.
该工具提供增强的搜索功能(透明的last.fm结果,没有广告,没有跛足,没什么令人毛骨悚然的),我发现显示搜索的最有用和不显眼的方式是使用备受诟病的iframe作为工具栏.这允许用户在不窃取用户焦点的情况下加载搜索.
不是iframe的忠实粉丝,我认为添加一个"关闭此框架"(ala Google图像搜索)链接可以让用户快速轻松地重新获得对浏览器的控制权.
然而,与Google不同,我不知道iframe中内容的位置是什么(仅通过src开始的位置).
所以现在我发现自己处于XSS世界以及所有与安全相关的问题.
使用Javascript我添加了"后退"和"前进"按钮,其中包含从父级链接调用的历史对象(当用户搜索结果加载到iframe时,后退按钮允许他们返回到主要网站完成后使用/浏览搜索结果).
有没有办法调用iframe中的当前位置并将页面(现在没有框架)重新加载到该位置?
我检查了PHP $ GLOBAL/$ _ SERVER变量,看看我可能会幸运.我理解存在安全问题,但是我没有看到这个特定函数与history.back()的区别是什么,浏览器在没有"通知"我的父框架的情况下进行调用.
我知道我可以从iframe本身检索src位置,但当然这假定用户没有超出此页面的导航,如果他们这样做,他们不介意丢失他们当前的位置并被重定向回到最初调用的页面框架(......啊......).
看起来框架似乎是为了窃取窗口而无法优雅地"突破"并保持用户会话的完整性.
难怪人们讨厌他们.:)