我正在寻找有关互联网浏览器历史的出版物.论文,文章,博客文章等等.在ACM IEEE等上找不到任何东西,我的博客搜索也没有发现任何显着的信息.
我目前正在使用jQuery BBQ插件来启用bowser导航按钮,但我遇到的问题是,如果用户为其中一个页面保存了书签,请说...
www.mysite.com/#page1
Run Code Online (Sandbox Code Playgroud)
当用户通过书签返回时,整页必须首先加载...
www.mysite.com/
Run Code Online (Sandbox Code Playgroud)
在url的哈希部分之前可以用于ajax回调来完成页面.
为了解决这个问题,我尝试在主页面的所有url调用上只创建一个"骨架"页面,以便通过ajax获取所有"内部"内容,但这似乎不是一个很好的解决方案.
有没有人知道任何不使用'hash'方法来支持'后退按钮历史记录等的方法/插件?
我有一个GWT项目,使用活动和地点.我的问题是历史令牌.
我的令牌模式:
#/{key 1}/{value 1}/{key 2}/{value 2}
Run Code Online (Sandbox Code Playgroud)
值1必须是数字
值2必须是数字
有效令牌是:
#/view/1/date/123123123123
Run Code Online (Sandbox Code Playgroud)
我决定验证令牌然后出现问题.
例如,如果用户手动更改令牌:
#/view/qqweqweqwedate/date/123123123123
Run Code Online (Sandbox Code Playgroud)
在这种情况下,值1不是数字.我捕获此异常并使用默认值修复令牌.问题是无效令牌在历史记录中,当我点击浏览器上的"后退"按钮时,它再次出现.
有人可以告诉我如何从历史记录中删除无效令牌或不允许在历史记录中写入它吗?
我们在GWT中有一个上传表单,用于上传文件.它在上传文件时工作正常,但如果我们连续上传两个以上的文件,然后点击浏览器后退按钮,就会发生奇怪的事情.页面消失,最终重新加载,然后冻结.在重新加载之前,没有按钮可被点击.这种情况发生在Chrome 39中,但不是我尝试过的其他浏览器(和旧版本的Firefox).
为什么表单面板会提交类似的内容?我该如何解决?我似乎找不到从历史记录中删除表单提交的方法,或者是一种不使用GWT的FormPanel和FileUpload上传文件的简单方法.我不能只是在每次上传文件后重新加载页面,因为刷新非常慢.
这是创建面板相关部分的代码:
FormPanel uploadForm = new FormPanel();
uploadForm.setEncoding(FormPanel.ENCODING_MULTIPART);
uploadForm.setMethod(FormPanel.METHOD_POST);
uploadForm.setAction(servletPath + destinationUrl);
FileUpload fileInput = new FileUpload();
uploadForm.add(fileInput.asWidget());
Run Code Online (Sandbox Code Playgroud)
当用户点击上传所选文件时,我们使用:
uploadForm.submit();
Run Code Online (Sandbox Code Playgroud)
该GWTUploadProject是不是一个解决方案,因为它的工作原理可以说是雪上加霜.如果您尝试在上传示例页面后单击后退,则会显示以前上传图像的额外缩略图!
我正在看这段JavaScript代码
if (history) {
var action = settings.replaceState ? history.replaceState : history.pushState;
if (action) {
// next line throws the error
action(null, null, window.location.pathname + window.location.search + '#' + hash);
}
}
Run Code Online (Sandbox Code Playgroud)
settings.replaceState == true
微软的最新东西给了我
无效的呼叫对象
在Chrome中,同一段代码会抛出该错误
未捕获的TypeError:非法调用
我在Firefox中收到此错误
TypeError:'replaceState'在未实现接口历史记录的对象上调用。
当我调试历史记录时,它看起来应该是正确的,并且有一个包含此方法的原型。
除了不同的错误消息,谁能告诉我这是怎么回事?
我必须维护一个带有 AJAX 搜索表单的站点(例如书籍),并且我希望搜索结果成为浏览器历史记录的一部分。
所以我设置了“popstate”事件处理程序
window.addEventListener('popstate', function(e) {
alert("popstate: " + JSON.stringify(e.state));
});
Run Code Online (Sandbox Code Playgroud)
并在成功的 AJAX 请求后调用pushState():
var stateObj = { q: "harry potter" };
window.history.pushState(stateObj, "Result", "/search");
Run Code Online (Sandbox Code Playgroud)
然后我的点击流是:
当我再回去一次时,我收到一条警告,其中popstate: null -路径更改为 /
当我在那之后继续前进时,我得到popstate: {"q":"harry potter"} -路径更改为 /search
因此,重要的 popstate 事件(带有查询字符串的事件)仅在前进时触发,而在返回时不会触发。
这是因为我从一个站点导航回来,它的历史条目是自动创建的,而不是由 pushState 以编程方式创建的?但如果是这样,History API …
我有一个相当具体的用例。
想象一下我从页面 A导航到页面 B(添加一个历史状态)。然后,在页面 B 上,我通过打开模式与该页面进行交互。但模式的实现方式是单击浏览器后退按钮时关闭。
当模态打开时:
ngOnInit(): void {
history.pushState(null, null, this.pageBHomeUrl + "?modal");
}
Run Code Online (Sandbox Code Playgroud)
当它关闭时,模态状态将替换为之前的主页 url:
close(): void {
history.replaceState(null, null, this.pageBHomeUrl);
}
Run Code Online (Sandbox Code Playgroud)
当我关闭模式时,我的浏览器历史记录如下所示(最近的在前)
但是,我想确保可以关闭模式,同时将页面 A 保留为最新的历史状态...有没有办法删除 pageBHomeUrl 历史状态或向前移动 pageA 状态?或者使用后退按钮关闭模式而不更改历史状态?
考虑这个网址:
http://localhost:4200/items
当在 GUI 中打开(展开)元素时,我使用Location.go() 来更新 URL :
http://localhost:4200/items;openedId=123
Run Code Online (Sandbox Code Playgroud)
当我点击后退按钮时,URL 更改回http://localhost:4200/items,但我对 ActivatedRoute.paramMap 的订阅未触发。(因此我的物品保持打开状态)
奇怪的是,当我连续打开两个元素,然后回击两次时,就会触发它:
Open main page -> http://localhost:4200/items
Open item 123 -> http://localhost:4200/items;openedId=123
Open item 456 -> http://localhost:4200/items;openedId=456
Back to http://localhost:4200/items;openedId=123 -> ActivatedRoute.paramMap triggered
Back to http://localhost:4200/items -> ActivatedRoute.paramMap triggered (!)
Run Code Online (Sandbox Code Playgroud)
为什么第一次不触发?为什么我需要有两个历史记录才能工作?我很困惑。
更新:这是我监听 paramMap 中的更改的方式:
public ngOnInit() {
this.subscriptions.add(this.activatedRoute.paramMap.subscribe(paramMap => {
this.handleNavigation(paramMap);
}));
}
Run Code Online (Sandbox Code Playgroud) 我正在努力为用户提供聪明和体贴,但我又一次遇到了"设计"问题.
我在网站上有很多页面,我选择删除默认导航并用一个简单的"后退"按钮替换它.
后退按钮的功能如下:
href="javascript:history.back()"
Run Code Online (Sandbox Code Playgroud)
我也"没有索引"这些页面,所以理论上一切都很好.
但是,我还有一个问题 - 它可能永远不会发生,但知道如何解决它会很好.
假设用户为该页面添加书签.目前还没有回头路,所以我想知道是否有可能创建默认值href="/"但是如果有历史记录则以某种方式覆盖它.事实上,如果我能够确定是否存在任何历史记录,那么修改JavaScript函数就足够了.
这可能吗?我不是JS大师,所以我可能会尝试实现一些无法实现的东西.
browser-history ×10
javascript ×4
angular ×2
gwt ×2
browser ×1
file-upload ×1
java ×1
jquery ×1
jquery-bbq ×1
react-router ×1
reactjs ×1
token ×1