PHP知识、源码、教程、框架、程序分享! -- PHP社区 关于我们 联系我们 联系电话 联系QQ

昔日的javascript:前缀

发表时间:2013-08-19 点击:

[本文摘要]:昔日的javascript:前缀 你可能注意到我还遗漏了其他几个文档中可能会出现JavaScript的地方,特别是在元素的属性中。考虑一下打开新弹出窗口的情况,如果你在使用严格型DOCTYPE规范,那...

昔日的javascript:前缀


你可能注意到我还遗漏了其他几个文档中可能会出现JavaScript的地方,特别是在元素的属性中。考虑一下打开新弹出窗口的情况,如果你在使用严格型DOCTYPE规范,那么锚标签中的target属性是无效的:

	<a href="http://advanceddomscripting.com" target="_blank">AdvancED DOM Scripting</a>

因而打开另一个窗口的唯一有效方式就是用JavaScript。在这种情况下,你可能(至少偶尔)会在<a>标签的href属性中使用特殊的javascript:前缀:

	<a href="javascript:window.open('http://advanceddomscripting.com');"> AdvancED DOM Scripting</a>

但在这种情况下,你不会得到想要的结果。

要测试这些嵌入脚本的例子,请打开包含在本书源代码中的例子页面chapter1/popup/examples.html,或者访问本书的网站http://advanceddomscripting.com。

javascript:前缀的一个问题是,它只能处理一个函数,而不能处理多个。而且,如果函数有返回值,原先的页面也会被返回的结果覆盖。例如,在Firefox中单击前面带有javascript:window.open(...)的锚,会打开想要的新窗口,但原先的窗口却会被window.open()方法返回的结果([objectWindow])所覆盖,如图1-1所示。


图1-1    在锚元素的href属性中使用javascript:前缀和

返回值的方法时,返回的值会覆盖原先的页面不过,这个问题可以通过如下方法来解决。在脚本中包含一个额外的函数:

	function popup(url) {
	    window.open(url);
	    //不返回任何值!
	}

然后引用这个函数而不直接引用window.open:

	<a href="javascript:popup('http://advanceddomscripting.com');">AdvancED DOM Scripting</a>

但这仍然使用了嵌入的javascript:前缀。为了避免对包装函数的依赖,你可能尝试过另一种不太令人讨厌的方式,即使用onclick事件属性将JavaScript代码附加到元素上以直接打开URL,同时在href属性中简单地放上一个#:

	<a href="#"onclick="window.open('http://advanceddomscripting.com');">AdvancED DOM Scripting</a>

版权声明:本文系技术人员研究整理的智慧结晶,转载勿用于商业用途,并保留本文链接,侵权必究!

本文链接:http://php.aixc.cn/web/js/9.html

声明:本站技术及源码均为原创,转载请勿用于商业用途,并注明出处及原文链接,侵权必究。