javascript 通信协议

摘要:javascript 通信协议是一个伪协议, 用于指定 URL 为 JavaScript 代码,对于 Chrome 浏览器来说, 如果最后一条 JavaScript 语句的值为字符串

简介

javascript 通信协议是一个伪协议, 用于指定 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><iframe width="50%" height="100%" src='+location.href+'></iframe><iframe 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);">
来自:https://www.cnblogs.com/ayuuuuuu/p/13362571.html

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_9517