使用浏览器内核时,如何在点击链接前,复制一个新的浏览器对象?

oldhunter 2019-01-02 11:57:52
使用浏览器内核时,如何在点击链接前,复制一个新的浏览器对象?

例如,我使用IE或Gecko内核,在点击某个链接后,当前浏览器对象导航到该页面,但我想再点击下一个链接时,必须后退回来。

有没有办法,在点击链接前,深度复制一个新的对象,这样点击链接后,不影响当前对象。最终实现,可继续点击下一个链接。

此问题困惑了很长时间,至少有半年多了。中间提过一次,没有解决掉。

我的开发环境是 C#+VS2013,使用的是IE内核WebBrowser 及 火狐内核Geckofx。
...全文
552 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
编程中,要序列化所有的需要知道的知识,然后打开另外一个进程并且还把这些知识传给另外一个进程,这是需要程序设计师开发的。不是免费的。我能体会到为什么有的人不顾其对于系统资源、速度、可用性的巨大消耗而非要提出这类要求。
  • 打赏
  • 举报
回复
以现在的技术,如果程序跳转到下一个场景,那么就是
Goto
而已,不是什么随便就复制整个系统进程然后还保存什么无限自由的可恢复场景的这种技术。 编程怎么设计就怎么用,因为它是按照需求来设计的。假设某一个操作点,需要修改为复制所谓的场景然后打开另外一个进程,那么请付费!!!!
  • 打赏
  • 举报
回复
推而广之,比如说玩游戏,我们要求所有人打枪之前,游戏都把整个操作系统场景整个复制一份,以便你随时可以退回到任意人打枪之前的画面去操作所谓的”其它状态分支“,多好啊? 一个游戏编写得,没当打枪的时候就把电脑系统整个复制一份儿新电脑系统出来,简直可以把美元变成厕纸,可以让全中国一切软件公司都倒闭,随便一个需求就能颠倒一切软件基本UI交互设计,让所有程序设计师都被坑死。
oldhunter 2019-01-02
  • 打赏
  • 举报
回复
引用 2 楼 以专业开发人员为伍 的回复:
浏览器不傻。浏览器点击链接时就执行连接,点击“退回”则退回上一个状态,他们知道什么是现在合理的、而什么是不合理的。你除非把谷歌等等生产浏览器的公司都给买下来。

"复制一个新的浏览器对象“,那么那就随时打开另外一个新进程玩儿呗。


关键现在遇到的问题是,连“后退”也不好用了,例如这个URL:http://quote.eastmoney.com/centerv2/hsgg/hsag

点击下4页,再点击下一层页面的某个子链接,点击后退,并没有后退到第4页,而是后退到了第1页。那怎么才能连续点击下一层的子链接呢? 所以才想到,复制一个对象出来,但没有找到复制的办法。

开一个进程,关键是,也得能把状态带过去啊?大部分页面状态是可以还原的,但有些页面,根本还原不了,如上面的URL。

我感觉这不会是浏览器内核公司的限制吧?浏览器内核都是开源的啊?不过看不懂原生的C代码。:)


  • 打赏
  • 举报
回复
点击一个链接是什么行为,编程者自然知道选择。打开一个新的窗口还是直接跳转页面,有其内部的原因。 你想通过修改浏览器(这里就行当于修改操作系统)来实现你说的那种,不如直接把谷歌等等公司买下来,并且让现在的电脑在内存、操作系统、运行速度等方面至少强大500倍,然后可以任性地随便在所有链接就自动复制整个操作系统了。
  • 打赏
  • 举报
回复
引用 1 楼 FainSheeg 的回复:
你要实现传说中的“在新标签页中打开”?
lz 的意思是,直接强行把所有的链接变为在新的浏览器进程中打开新页面,而且新页面还跟老的浏览器进程页面有完全一样的历史状态。
oldhunter 2019-01-02
  • 打赏
  • 举报
回复
引用 1 楼 FainSheeg 的回复:
你要实现传说中的“在新标签页中打开”?


可以这么理解,但必须是所有链接,都要这样操作。原来不是新窗口的链接(如POST方式的链接),也要使用新窗口,同时截获下来(浏览器有抑制弹出新窗口的事件)。截获后,使用一个新的浏览器对象打开,旧对象的保留现状,这样可以继续点击下一个链接。
  • 打赏
  • 举报
回复
浏览器不傻。浏览器点击链接时就执行连接,点击“退回”则退回上一个状态,他们知道什么是现在合理的、而什么是不合理的。你除非把谷歌等等生产浏览器的公司都给买下来。 "复制一个新的浏览器对象“,那么那就随时打开另外一个新进程玩儿呗。
FainSheeg 2019-01-02
  • 打赏
  • 举报
回复
你要实现传说中的“在新标签页中打开”?
  • 打赏
  • 举报
回复
现在的前端框架,基本上都是针对“单页面应用”的技术,当你按流啊冷凝器的“退回”按钮时,页面仍然是同一个页面,只不过 # 后边的锚定标签改变了而已。所以无需编程,自然而然是回到第四页。 而 asp.net webform 或者 asp.net mvc 都是一遍遍刷新页面的技术。当你按“退回”按钮时,页面又跳转到上一个页面去了,所以自然而然是回到第一页。 不过不管用什么技术,都能解决用户需求,只不过下功夫深浅问题。你不能总是用那一类点子来凑合着掩盖技术上的问题,如果设计不正,会用巨大的 bug 来掩盖眼前的小 bug。
  • 打赏
  • 举报
回复
引用 6 楼 oldhunter 的回复:
点击下4页,再点击下一层页面的某个子链接,点击后退,并没有后退到第4页,而是后退到了第1页。那怎么才能连续点击下一层的子链接呢? 所以才想到,复制一个对象出来,但没有找到复制的办法。 开一个进程,关键是,也得能把状态带过去啊?大部分页面状态是可以还原的,但有些页面,根本还原不了,如上面的URL。 我感觉这不会是浏览器内核公司的限制吧?浏览器内核都是开源的啊?
你如果问一个 asp.net 程序员为什么给你搞出这类“后退”功能,他怎么说?他总之是要搞懂自己的编程原理,知道为什么回退到第一页而不是第四页的吧? 传统的页面一遍遍刷新的机制,本身就是无状态的。而 asp.net webform 程序员知道在页面中有非常自动化的 ViewState 保存页面上数十万嵌套状态,那么他起码也得基于一个 aspx 页面自身来组合成百上千的“局部页面”(ascx,并且用 aspx 来管理巨大的状态集合)。而 asp.net mvc 程序员做不到这些,只能做到 webform 的千分之一,也就是基于 Session 机制来稍微处理个别状态(例如保存个页号),不但不能轻松地好不费时间地回复“第四页”的各种操作状态,并且花费巨大代价一遍遍地重新查询、生成第四页数据。 说白了,纯粹技术问题。但是你如果意识上不管原理而提出了一个特别的想法,其实会把好事儿变成很大的怪事儿,没有推进产品反而是倒退几十年。
sp1234_maJia 2019-01-02
  • 打赏
  • 举报
回复
有 bug 则改 bug。可以回溯用户需求。这都没有问题。比如说假设手机支付宝我们点击手机"退回"按钮时的界面不是正常地上一页,自然是阿里巴巴会去负责。 那么假设说阿里巴巴出了这么一种产品联络人,他说所有的页面的默认的切换功能,都要并发打开一个新的手机支付宝进程,原来的因公进程还得同时存在,那么这岂不是连安卓、苹果公司都要被买下来才能实现的幻想吗?而且手机系统内存和速度起码要提高500倍以上,才能说这种提法是有点靠谱的吧。 这种说法其实我经常遇到。这种打开新进程的要求,其实就是要付费开发。一旦你核算出这种开发费用和系统运行费用,才知道用户是真的这么想的,还是个别只懂一点技术的人幻想出来的。

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧