JavaScript中伪协议 javascript:使用探讨


Posted in Javascript onJuly 18, 2014

将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中。这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开。这样的URL如下所示:

javascript:var now = new Date(); "<h1>The time is:</h1>" + now;

当浏览器装载了这样的URL时,它将执行这个URL中包含的javascript代码,并把最后一条javascript语句的字符串值作为新文档的内容显示出来。这个字符串值可以含有HTML标记,并被格式化,其显示与其他装载进浏览器的文档完全相同。

javascript URL还可以含有只执行动作,但不返回值的javascript语句。例如:

javascript:alert("hello world!")

装载了这种URL时,浏览器仅执行其中的javascript代码,但由于没有作为新文档来显示的值,因此它并不改变当前显示的文档。

通常我们想用javascript:URL执行某些不改变当前显示的文档的javascript代码。要做到这一点,必须确保URL中的最后一条语句没有返回值。一种方法是用void运算符显式地把返回值指定为underfined,只需要在javascript:URL的结尾使用语句void 0;即可。例如:下面的URL将打开一个新的空浏览器窗口,而不改变当前窗口的内容:

javascript:window.open("about:blank"); void 0;

如果这个URL没有void运算符,window.open()方法的返回值将被转换成字符串并被显示出来,当前窗口将被如下所示的文档覆盖。

Javascript 相关文章推荐
JavaScript高级程序设计 读书笔记之九 本地对象Array
Feb 27 Javascript
jquery 之 $().hover(func1, funct2)使用方法
Jun 14 Javascript
Javascript图像处理—亮度对比度应用案例
Jan 03 Javascript
JS中如何设置readOnly的值
Dec 25 Javascript
Javascript点击其他任意地方隐藏关闭DIV实例
Jun 21 Javascript
CSS3 media queries结合jQuery实现响应式导航
Sep 30 Javascript
Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件
Sep 18 Javascript
ES6中javascript实现函数绑定及类的事件绑定功能详解
Nov 08 Javascript
Vue动态组件和异步组件原理详解
May 06 Javascript
对layer弹出框中icon数字参数的说明介绍
Sep 04 Javascript
浅谈关于vue中scss公用的解决方案
Dec 02 Javascript
vue全局使用axios的操作
Sep 08 Javascript
js清空表单数据的两种方式(遍历+reset)
Jul 18 #Javascript
js使用正则实现ReplaceAll全部替换的方法
Jul 18 #Javascript
javascript原生和jquery库实现iframe自适应高度和宽度
Jul 18 #Javascript
关于javaScript注册click事件传递参数的不成功问题
Jul 18 #Javascript
Javascript验证上传图片大小[前台处理]
Jul 18 #Javascript
IE中JS跳转丢失referrer问题的2个解决方法
Jul 18 #Javascript
JavaScript中的document.referrer在各种浏览器测试结果
Jul 18 #Javascript
You might like
php strrpos()与strripos()函数
2013/08/31 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
php从memcache读取数据再批量写入mysql的方法
2014/12/29 PHP
php对文件夹进行相关操作(遍历、计算大小)
2015/11/04 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
PHP实现简单的计算器
2020/08/28 PHP
让GoogleCode的SVN下的HTML文件在FireFox下正常显示.
2009/05/25 Javascript
基于jquery的仿百度搜索框效果代码
2011/04/11 Javascript
jquery ajax请求实例深入解析
2012/11/26 Javascript
js新闻滚动 js如何实现新闻滚动效果
2013/01/07 Javascript
JQuery判断子iframe何时加载完成解决方案
2013/08/20 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
js数组如何添加json数据及js数组与json的区别
2015/10/27 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
2018/02/09 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
layui 图片上传+表单提交+ Spring MVC的实例
2019/09/21 Javascript
javascript设计模式 ? 简单工厂模式原理与应用实例分析
2020/04/09 Javascript
jQuery加PHP实现图片上传并提交的示例代码
2020/07/16 jQuery
windows下添加Python环境变量的方法汇总
2018/05/14 Python
Python3.6.0+opencv3.3.0人脸检测示例
2018/05/25 Python
python实现requests发送/上传多个文件的示例
2018/06/04 Python
python调用c++传递数组的实例
2019/02/13 Python
Lombok插件安装(IDEA)及配置jar包使用详解
2020/11/04 Python
CSS3美化表单控件全集
2016/06/29 HTML / CSS
html5构建触屏网站之网站尺寸探讨
2013/01/07 HTML / CSS
亚洲独特体验旅游专家:eOasia
2018/08/15 全球购物
ORLY官网:美国专业美甲一线品牌
2019/12/11 全球购物
意大利奢侈品牌在线精品店:Jole.it
2020/11/23 全球购物
小学运动会口号
2014/06/07 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
个人工作失误的保证书怎么写?
2019/06/21 职场文书
解决redis sentinel 频繁主备切换的问题
2021/04/12 Redis
 python中的元类metaclass详情
2022/05/30 Python