简介

javascript 通信协议是一个伪协议[1], 用于指定 URL 为 JavaScript 代码

  • 语法:

    javascript:someScript;
    • someScript 是一个或多个使用 ; 分隔的 JavaScript 语句.
  • 示例

    <a href="javascript:alert('JavaScript Link!');">JavaScript Link</a>

特点

  • 返回值会替换当前文档

    • 对于 Chrome 浏览器来说, 如果最后一条 JavaScript 语句的值为字符串 (使用'', ""` 括起来的值), 那么该字符串会替换当前文档的内容, 作为新文档显示出来

    • 对于 Firefox 浏览器来说, 如果最后一条浏览器的返回值不为 undefined, 那么就调用该返回值的 toString() 方法 (如果 toString() 方法不存在就调用 valueOf() 方法), 得到的结果作为新文档显示出来

    • 返回值为 undefined 的几种常见写法

      javascript:;
      
      javascript:undefined;  // 全局变量 undefined 的值可能被更改
      
      // void 将之后的内容当作表达式, 然后对该表达是求值, 并始终返回 undefined, 而不管全局变量 undefined 的值是否被改变
      // 以下写法等价
      javascript:void(0);
      javascript:void 0;

用途

  • 任何使用 URL 的地方都可以使用该通信协议

    • 在保留锚元素 href 属性的同时防止点击锚元素页内/外跳转

      javascript:;
      javascript:undefined;
      javascript:void(0);
    • 当作 bookmarklet

      // 修改书签的 URL 为以下代码, 就可实现分屏功能
      javascript:'<html><head><title>'+document.title+'</title></head><body style="margin:0;"><iframe style="border:none;" width="50%" height="100%" src='+location.href+'></iframe><iframe style="border:none;" width="50%" height="100%" src='+location.href+'></iframe></body></html>';
    • 执行 JavaScript 代码 (不推荐)

      // 更改页面背景为绿色 (推荐为锚元素绑定事件来更改页面背景)
      <a href="javascript:void(document.body.style.backgroundColor='green');"> // 打开新页面 (注意需返回 undefined, 否则在火狐浏览器会替换文档)
      <a href="javascript:window.open('about:blank'); void(0);">

  1. 网络通信协议

javascript 通信协议的更多相关文章

  1. Split Screen

    Split Screen 是一个用来分屏的 bookmarklet 程序. 它通过 javascript 通信协议实现[1]. 特点 使用 HTML5 <dialog> 元素实现 使用 G ...

  2. JavaScript标准参考教材(alpha)--笔记

    一.导论 二.基本语法 1.严格来说var a=1与a=1效果不太一样,delete命令无法删除前者. JavaScirpt是一种动态类型语言,也就是说,变量的类型没有限制,可以赋予各种类型的值. J ...

  3. Javascript Window Location

    window.location 对象在编写时可不使用 window 这个前缀. URL : 统一资源定位符 (Uniform Resource Locator) 说明: 完整的URL示例:scheme ...

  4. JavaScript最全的10种跨域共享的方法

    在客户端编程语言中,如javascript和ActionScript,同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义.同源策略规定跨域之间的脚本是隔离的,一个域的脚本不能访问和 ...

  5. JavaScript 跨域方法总结

    同源策略 在客户端编程语言中,如javascript和 ActionScript,同源策略是一个很重要的安全理念,它在保证数据的安全性方面有着重要的意义.同源策略规定跨域之间的脚本是隔离的,一个域的脚 ...

  6. JavaScript获取浏览器信息的方法

    Window有navigator对象让我们得知浏览器的全部信息.我们可以利用一系列的API函数得知浏览器的信息. JavaScript代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 1 ...

  7. HTML/CSS/JavaScript学习总结(转)

    HTML 网站开发的主要原则是: – 用标签元素HTML描述网页的内容结构: – 用CSS描述网页的排版布局: – 用JavaScript描述网页的事件处理,即鼠标或键盘在网页元素上的动作后的程序 H ...

  8. 前端开发面试题总结之——JAVASCRIPT(一)

    ___________________________________________________________________________________ 相关知识点 数据类型.运算.对象 ...

  9. JavaScript / 本地存储

    cookie 首先让我们先了解一下,什么是cookie,cookie是浏览器提供的一种机制,他将document.cookie的接口提供给JavaScript使其可以对cookie进行控制,但cook ...

随机推荐

  1. Python3-os模块-操作系统的各种接口

    Python3中的os模块提供了一个便携的方式去使用操作系统的相关功能 os.name 返回导入的操作系统相关模块的名字,如 posix(unix/linux),nt(windows)等 os.env ...

  2. 03 . 二进制部署kubernetes1.18.4

    简介 目前生产部署kubernetes集群主要两种方式 kubeadm Kubeadm是一个K8s部署工具,提供kubeadm init和kubeadm join,用于快速部署Kubernetes集群 ...

  3. Python实用笔记 (27)面向对象高级编程——使用枚举类

    枚举类型定义一个class类型,然后,每个常量都是class的一个唯一实例.Python提供了Enum类来实现这个功能: from enum import Enum Month = Enum('Mon ...

  4. 关于Maven我应该知道的事

    https://www.cnblogs.com/best/p/9676515.html bilibili 这里不是入门指南, 而是一些个人使用遇到的问题参考 一.环境 Maven 版本JDK要求 Ma ...

  5. 【总结-前台发送后台接收表单】MVC提交表单的四种方式

    https://www.cnblogs.com/chenwolong/p/Form.html#commentform 后台控制器接收前台表单参数三种方法: 一.普通参数 HTML标签name 和参数名 ...

  6. (私人收藏)PPT数据图表

    PPT数据图表 https://pan.baidu.com/s/1lXt8UU20IotD4LLagfTTXAkknf

  7. Mybatis一对一映射resultMap子标签中顺序问题

    直接上图 鼠标点上红线出现如下提示 The content of element type "resultMap" must match  "(constructor?, ...

  8. 利用binarySearch实现抽奖计算逻辑

    前言 我们平时抽奖总感觉想抽到最高的奖那么难,哈哈当然不会那么容易啦,正巧写了个抽奖的功能,趁着有时间把抽奖的功能实现整理一下,我们要抽奖首先要定义一个奖品的实体类,这个实体类中包含奖品的基本信息,比 ...

  9. 资深前端工程师带你认识网页后缀html、htm、shtml、shtm有什么区别?

    每一个网页或者说是web页都有其固定的后缀名,不同的后缀名对应着不同的文件格式和不同的规则.协议.用法,最常见的web页的后缀名是.html和.htm,但这只是web页最基本的两种文件格式,今天我们来 ...

  10. Linux多任务编程之五:exit()和_exit()函数(转)

    来源:CSDN  作者:王文松   转自:Linux公社 ----------------------------------------------------------------------- ...