【问题标题】:Duplicate a tab in Chrome without Reloading the Page?在 Chrome 中复制标签而不重新加载页面?
【发布时间】:2013-02-23 05:31:48
【问题描述】:

有没有办法完全复制谷歌浏览器中当前标签的状态?我想要页面当前状态的精确副本,而无需在另一个选项卡中重新加载页面。

一个示例用例:

在浏览新闻网站上的“幻灯片”时,我想保留当前正在播放的幻灯片,但创建一个副本以便我可以继续查看下一张幻灯片。如果我只是右键单击并“复制”选项卡,新页面将完全重新加载,重新处理所有 Javascript 并再次运行预幻灯片广告。

【问题讨论】:

  • 顺便说一句,当您以正常方式复制选项卡时,它会重新处理 JavaScript 和 DOM,但我认为它不会发出网络请求。
  • 好点,@HaralanDobrev。 Javascript 和 DOM 的重新加载可能是一个不可避免的过程。我不是安全专家,但我可以想象如果页面上的脚本没有运行,它可能会导致会话问题。但是,如果可以在安全页面上打开多个沙盒标签(例如 https 上的 Facebook 或 Gmail),那么我认为创建当前页面的“内存”副本应该是微不足道的。同样,这可能是不可能的,但感谢您的评论 - 绝对有见地的是 Chrome 不会在重复操作中抛出新的 HTTP 请求。
  • 虽然 Chrome 和 IE9 确实重新处理了 HTML 和 JavaScript 而无需从服务器重新加载,但 Opera 似乎正在克隆 DOM。 (一旦他们切换到 WebKit,这种行为可能会消失。)所以我认为根据 @umterp09 的评论,你的问题的答案是:“不,暂时不使用 Chrome”。
  • 取决于你想做多少工作,但这正是突变观察者可以做的事情。

标签: google-chrome google-chrome-extension google-chrome-devtools


【解决方案1】:

简而言之,“不”你不能。

我不是这方面的专家 但是我知道可以通过某些方式实现类似的行为:

转储整个 DOM

虽然从未尝试过。您可以将 DOM 转换为字符串,将其传递给新窗口,然后将其解析为文档。这会让你失去你的 DOM 事件和状态操作 javascript。 (但这对你的情况有好处)

var dtab = window.open('about:blank', 'duplicate_a_tab');
dtab.document.open();
dtab.document.write("... yout html string ..");
dtab.document.close();

开发扩展

让用户以当前状态继续在当前标签页上,您的扩展程序应该能够捕获该区域的屏幕截图并在新标签页中打开该屏幕截图。市场上有很多截屏插件。

如果该网站是您自己的

您可以开发使用本地状态的服务,例如渐进式网络应用程序。单独提供一个指向“重复”的链接,该链接最终将在具有相同本地状态和标志的不同选项卡中打开相同的 URL 不同步。

当用户使用浏览器内置副本时,这将不起作用 功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    相关资源
    最近更新 更多