Split Screen 是一个用来分屏的 bookmarklet 程序. 它通过 javascript 通信协议实现[1].

特点

使用

  1. 将以下 Split Screen 链接拖到浏览器书签栏.
Drag this to your favorites: Split Screen
  1. 在任意打开的网站中点击该书签, 按功能说明操作即可

![Split Screen 演示](https://images.cnblogs.com/cnblogs_com/ayuuuuuu/1808482/o_200723125712splite screen.gif)

功能说明

  • URL 部分用来键入两个需要打开的网址 (默认为当前网址)
  • Direction 部分用来选择网页展示的方向 (水平 or 垂直, 默认为水平)
  • 左键点击 X, Cancel, 灰色区域按钮, 或键入 Esc 返回当前网页, 不进行任何操作
  • 左键点击 Confirm 按钮进行分屏操作 (该按钮默认聚焦)
  • 刷新页面后恢复最初页面

改进方向或缺陷

  • 一个标签页多次分屏存在问题

  • 不引入静态资源, 减少网络 IO

  • 不使用 document.write(), 使用 DOM 操作代替

  • 在浏览器新标签页无法使用

  • 需要刷新页面才能还原最初的页面

  • 性能优化

  • <dialog> 元素在一些浏览器还没有实现 (尤其是老浏览器), 通过打补丁展示效果可能不一致

  • 由于浏览器同源策略, 某些网页可能无法直接访问到, 比如 Google (一切以安全为第一要义)

代码

  • dialog 源码

  • bookmarklet.js 源码

    fetch('https://ayuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu.github.io/demos/dialog/index.html')
    .then((response) => response.text())
    .then((html) => {
    document.write(html);
    document.close();
    });
  • Split Screen Demo


  1. javascript 通信协议

Split Screen的更多相关文章

  1. iOS 9 学习系列:Split Screen Multitasking

    http://www.cocoachina.com/ios/20151010/13601.html iOS 9 的一个重大变化就是增加了多任务,这个多任务允许用户在屏幕上同时运行多个 app.有两种形 ...

  2. ubuntu Screen 的比较详细的命令

    Linux Screen Commands For Developers 转自:http://fosshelp.blogspot.com/2014/02/linux-screen-commands-f ...

  3. man screen

    http://www.gnu.org/software/screen/manual/screen.html Screen User's Manual Next: Overview, Previous: ...

  4. vim编辑指令(转)

    跳跃指令 类似于游览器中的<前进><后退>按钮  CTRL-] -> 跟着link/tag转入 (follow link/tag)  CTRL-o -> 回到上一次 ...

  5. Xcode 7在支持ipad的设备中需要支持分屏!

    http://sandy.int.ru/xcode/xcode7zaizhichiipaddeshebeizhongyaozhichifenping.html 在更新APP的时候发现ERROR ITM ...

  6. Git - Tutorial [Lars Vogel]

    From: http://www.vogella.com/tutorials/Git/article.html Git - Tutorial Lars Vogel Version 5.6 Copyri ...

  7. R语言绘图002-页面布局

    par().layout().split.screen()函数 1. par()函数的参数详解 函数par()可以用来设置或者获取图形参数,par()本身(括号中不写任何参数)返回当前的图形参数设置( ...

  8. Git - Tutorial官方【转】

    转自:http://www.vogella.com/tutorials/Git/article.html#git_rename_branch Lars Vogel Version 5.8 Copyri ...

  9. eclipse 分屏

    刚刚一直找不到eclipse分屏功能,查了下发现是可以的. 具体见:http://www.coderanch.com/t/101996/vc/Split-screen-editor-Eclipse E ...

随机推荐

  1. 【String注解驱动开发】你了解@PostConstruct注解和@PreDestroy注解吗?

    写在前面 在之前的文章中,我们介绍了如何使用@Bean注解指定初始化和销毁的方法,小伙伴们可以参见<[Spring注解驱动开发]如何使用@Bean注解指定初始化和销毁的方法?看这一篇就够了!!& ...

  2. SpringMVC中Map、Model、ModelMap、ModelAndView之间的关系及区别

    首先,在了解这三者之前,需要知道一点:SpringMVC在调用方法前会创建一个隐含的数据模型(Model),作为模型数据的存储容器, 成为”隐含模型”. 如果controller方法的参数为Moedl ...

  3. ajax前后端交互原理(7)

    7.ajax函数封装 7.1.实例引入 需求: 每秒钟请求一次服务器 获取到数据 实现: 把ajax进行封装 <!DOCTYPE html> <html> <head&g ...

  4. js语法基础入门(1.2)

    1.4.查找元素的方法 1.4.1.查找元素的方法 JavaScript可以去操作html元素,要实现对html元素的操作,首选应该找到这个元素,有点类似于css中的选择器 html代码: <d ...

  5. crm项目开发之架构设计

    CRM customer relationship management 客户管理系统 1. 干什么用的? 管理客户 维护客户关系 2. 谁去使用? 销售 班主任 项目经理 3. 需求: 1. 登录 ...

  6. Hive 报错SemanticException Error in parsing

    以下sql执行时报错SemanticException Error in parsing select clr.id,clr.customer_id,clr,contract_code,clr.cor ...

  7. WSL配置高翔vslam环境配置流水账

    1 安装参考博文链接:https://www.cnblogs.com/dalaska/p/12802384.html 2 Ubuntu 16.04地址:https://www.microsoft.co ...

  8. pl/sql案例

    项目生命周期: 瀑布模型 拿到一个项目后,首先:分析需要用到的SQL语句: 其次:分析需要定义的变量初始值是多少,怎么得到最终值: 案例一: 统计每年入职的员工数量以及总数量: SQL语句:selec ...

  9. 搭建一套ASP.NET Core+Nacos+Spring Cloud Gateway项目

    前言     伴随着随着微服务概念的不断盛行,与之对应的各种解决方案也层出不穷.这毕竟是一个信息大爆发的时代,各种编程语言大行其道,各有各的优势.但是有一点未曾改变,那就是他们服务的方式,工作的时候各 ...

  10. Python线程池与进程池

    Python线程池与进程池 前言 前面我们已经将线程并发编程与进程并行编程全部摸了个透,其实我第一次学习他们的时候感觉非常困难甚至是吃力.因为概念实在是太多了,各种锁,数据共享同步,各种方法等等让人十 ...