Phi*_*esi 6 javascript html5 browser-history google-chrome-extension angularjs
我正在尝试开发一个Chrome扩展程序,将Angular应用程序注入用户的浏览器窗口,以便创建一个交互式侧边栏.通过内容脚本将iframe添加到页面并将框架的源设置为扩展目录中的html文件,我大部分都能够达到我想要的100%.
不幸的是,因为Angular应用程序有多个路由(允许用户登录并查看许多不同类型的信息),我发现它正在干扰用户按预期使用其后退/前进按钮; 由于哈希值发生变化,iframe的源会发生变化,因此会为历史记录保存一个新条目.
我似乎无法为此找到或创建一个解决方法; 是否有一些聪明的方法可以使Angular不生成历史条目,或者实现创建不使用iframe而不保存到历史记录的侧边栏,或禁用iframe保存到历史记录?
最终,我一直在尝试编写一个chrome扩展,在iframe中嵌入一个角度应用程序,但发现所有哈希更改都会干扰Chrome的历史记录,因为iframe源因路由更改而不断变化.
虽然我不能肯定地说,如果使用ui-router而不是角度路由器将允许我绕过我的问题(似乎ui-router使用状态,并且不一定需要更改网址,虽然我可能是错的),我已确定根本原因是更改了iframe的源,并且只有一种方法可以导致iframe根本不记录在历史记录中:利用window.location.replace函数而不是直接更改位置.
我们采取了以下步骤,以确保我的iframe根本不会干扰Chrome的历史记录:
$("#myIframe").get(0).contentWindow.location.replace(myUrl);location.replace(url)$location.path(newPath).replace()因此角度使用相同的策略.一个更好的解决方案是弄清楚$location.replace()默认情况下如何使用,我现在试图实现.从本质上讲,这一切归结为:location.replace将允许您更改iframe的源代码而不保存到历史记录.
| 归档时间: |
|
| 查看次数: |
4912 次 |
| 最近记录: |