URL中的JavaScript

来源:互联网 发布:标致雪铁龙 知乎 编辑:程序博客网 时间:2024/05/04 05:31

javascript : 伪协议限定符说明了URL的内容是JavaScript解释器将要运行的JavaScript代码的一个任意的字符串。一个JavaScript URL如下所示:

javascript:var now=new Date();"<h1>The time is :</h1>"+now;
当浏览器载入这样的一个JavaScript URL,它会执行URL中所包含的JavaScript代码,并且使用最后一个JavaScript语句或表达式的值,转换为一个字符串,作为新载入的文档的内容显示。这个字符串值可能包含HTML标记,并且像载入到浏览器中的其他文档那样格式化和显示。

JavaScript URL也可以包含执行操作但不返回值的JavaScript语句。例如:

javascript:alert("Hello World !");
当载入了这种类型的URL的时候,浏览器执行JavaScript代码,但是因为没有值作为新的文档来显示,它并不会改变当前显示的文档。

通常程序员还可能希望使用一个JavaScript URL来执行某些JavaScript代码而不改变当前显示的文档。要做到这一点,需要确保URL中的最后一条语句没有返回值。确保这一点的一种方式是,使用void运算符来显式地指定一个未定义的返回值。只需要在JavaScript URL的结尾使用void 0;。例如下面的URL打开一个新的空白的浏览器而并不改变当前窗口的内容:

javascript:window.open("about:blank");void 0;
如果这个URL中没有void运算符,Window.open( )方法调用的返回值将会被转换为一个字符串并显示,并且当前的文档会被新的文档覆盖,新文档显示如下内容:

[object Window]
javascript:伪协议可以和HTML属性一起使用,该属性的值也应该是一个URL。一个超链接的href属性就满足这种条件。当用户点击一个这样的链接,指定的JavaScript代码会执行。在这种情况下,JavaScript URL本质上是一个onclick事件句柄的替代。

<a href="javascript:alert('Hello World !')">test</a>
类似的,一个JavaScript URL可以用作<form>标记的action属性,这样,当用户提交这个表单的时候,URL中的JavaScript代码就会执行:

<body><form action="javascript:alert('Hello World !')"><input type="submit" value="confirm"></form></body>


原创粉丝点击