哆啦A梦 50周年应援

JavaScript中伪协议

javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。

①将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中。

这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。

如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开。这样的URL如下所示:

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

<head>
    <meta charset="UTF-8">
    <title>JavaScript中伪协议</title>
</head>

<body>
    <a href="javascript:var now = new Date(); '<h1>当前 time is:</h1>' + now;">当前时间</a>
</body>

</html>

点击链接

 

 ②当浏览器装载了这样的URL时,它将执行这个URL中包含的javascript代码,并把最后一条javascript语句的字符串值作为新文档的内容显示出来。

这个字符串值可以含有HTML标记,并被格式化,其显示与其他装载进浏览器的文档完全相同。

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

javascript:alert("hello world!")
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>JavaScript中伪协议</title>
</head>

<body>
    <a href="javascript:alert('hello world!')">弹出</a>
</body>

</html>

点击链接

 

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

通常我们想用javascript:URL执行某些不改变当前显示的文档的javascript代码。要做到这一点,必须确保URL中的最后一条语句没有返回值。

一种方法是用void运算符显式地把返回值指定为underfined,只需要在javascript:URL的结尾使用语句void 0;即可。

例如:下面的URL将打开一个新的空浏览器窗口,而不改变当前窗口的内容:

javascript:window.open("about:blank"); void 0;
<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title>JavaScript中伪协议</title>
</head>

<body>
    <a href="javascript:window.open('about:blank'); void 0;">打开空白页</a>
</body>

</html>

打开空白页

 

参考:http://www.jb51.net/article/52358.htm

posted @ 2021-10-18 21:50  秋泊ソース  阅读(106)  评论(0编辑  收藏  举报