网页变量 & JavaScript 伪协议

2019-04-15 17:51发布

1.3  Hello JavaScript 看完了JavaScript神奇之处的演示,你是否已经跃跃欲试了呢。那么就跟随本章下面的例子来窥探一下JavaScript究竟都可以干什么吧。 1.3.1  网页变脸 下面是一个很简单的例子,只有几行代码,并且不需要建立什么文件。我们尝试改变一下百度首页的图片,如图1.7所示,这只是恶搞,没有攻击性,仅供学习之用。   (点击查看大图)图1.7  替换百度首页的图片 上述程序的具体创建步骤如下。 (1) 在地址栏输入"http://www.baidu.com",然后打开百度页面。 (2) 在地址栏输入下面的代码,然后按Enter键:
  1. JavaScript:var xgun = new Image();  
  2. xgun.src=  
  3. 'http://hiphotos.baidu.com/ylemyu/pic/item/2ae7fa180ae2d86ddbb4bdae.jpg';  
  4. var img = document.getElementsByTagName('img')[0];  
  5. img.parentNode.replaceChild(xgun,img);alert('变'
哈哈,图片换了,但千万别以为下次打开还会看见这个图。这只是一个障眼法而已。 由JavaScript+":"+JavaScript代码组成的URL是一个JavaScript伪协议,该协议类似于http://url。它可以使用在任何HTTP能使用的地方。所谓"伪"协议,就是指非标准化的协议,即这个协议并没有写在国际标准组织的归档记录中,也表示并不是所有浏览器都支持JavaScript伪协议。所以在开发时尽量不要使用。 以上转载自:http://book.51cto.com/art/200909/151616.htm 以下转载自:http://www.ynpxrz.com/n700026c2023.aspx javascript:这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。 将javascript代码添加到客户端的方法是把它放置在伪协议说明符javascript:后的URL中。这个特殊的协议类型声明了URL的主体是任意的javascript代码,它由javascript的解释器运行。如果javascript:URL中的javascript代码含有多个语句,必须使用分号将这些语句分隔开。这样的URL如下所示: javascript:var now = new Date(); "

The time is:

" + 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()方法的返回值将被转换成字符串并被显示出来,当前窗口将被如下所示的文档覆盖。