第五章 javascript编程可养成的好习惯

用户点击某个链接时弹出一个新窗口
javascript使用window对象的open()方法来创建新的浏览器窗口,这个方法有三个参数:
window.open(url,name,features)
url:新窗口地址,如果省略,则弹出空白窗口
name:新窗口的名字
features:新窗口的属性。

比如:

function open_url(url){
            window.open(url,"new-window","width:320,height:480");
        }       

用 “javascript:” 伪协议来调用上面那个函数。(“javascript:” 伪协议让我们可以通过一个链接来调用javascript函数)

<body>
<a href="javascript:open_url(‘http://www.baidu.com‘);">百度</a>
<script type="text/javascript">
function open_url(url){
    window.open(url,"new-window","width:320,height:480");
}
</script>
</body>

用onclick事件处理函数作为属性 嵌入<a>标签

<a href="#" onclick="open_url(‘http://www.baidu.com‘);return false;">百度2</a>
<script type="text/javascript">
function open_url(url){
    window.open(url,"new-window","width:320,height:480");
}
</script>

上面两种方法没有预留退路,如果用户禁用浏览器的javascript1功能,这样的链接就没用处了。

预留退路就是说,虽然在遇到不支持js的浏览器或者用户禁用js这类障碍某些功能无法使用,但最基本的操作仍能顺利完成。

<!-- 预留退路的做法-->
<a href="http://www.baidu.com" onclick="open_url(‘http://www.baidu.com‘); return false">百度3</a>

<!--预留退路的简化版-->
<a href="http://www.baidu.com" onclick="open_url(this.getAttribute(‘href‘); return false">百度4</a>

<!--预留退路的最简化版-->
<a href="http://www.baidu.com" onclick="open_url(this.href); return false">百度4</a>

<!--由DOM提供的this.href属性-->

现在即使javascript已被禁用这个链接也是可用的。

行为和结构分离开:

<a href="http://www.baidu.com" class="link">百度5</a>

<script type="text/javascript">
function open_url(url){
    window.open(url,"new-window","width:320,height:480");
}    

window.onload = prepareLinks;
function prepareLinks(){
    var links=document.getElementsByTagName(‘a‘);
    for (var i=0; i<links.length; i++){
        if (links[i].getAttribute(‘class‘) == ‘link‘){
            links[i].onclick = function(){
                open_url(this.getAttribute(‘href‘));
                return false;
            }
        }
    }
}
</script>
时间: 2024-10-13 09:38:49

第五章 javascript编程可养成的好习惯的相关文章

javascript数据结构和算法 第一章(Javascript编程环境和模型) 一

这一章介绍了我们在这本书中使用的描述各种数据结构和算法的Javascript的编程环境和编程架构. Javascript 环境 Javascript 在很长一段时间都是被作为web浏览器内置脚本编程语言来使用. 然而,在过去几年里,javascript编程环境得到了极大的发展,他们可以使javascript在桌面或者服务端运行. 在我们这本书中,我们使用其中的一个javascript环境:javascript shell:是Mozilla公司的javascript环境,被称为SpiderMonk

学习笔记 第十五章 JavaScript基础

第15章   JavaScript基础 [学习重点] 了解JavaScript基础知识 熟悉常量和变量 能够使用表达式和运算符 正确使用语句 能够掌握数据类型和转换的基本方法 正确使用函数.对象.数组等核心知识和技法 能够编写简单的脚本,解决网页中常见特效和互动效果 15.1  JavaScript入门 JavaScript是一种轻量级.解释型的Web开发语言.现代浏览器都已嵌入了JavaScript引擎./sc 15.1.1 在网页中插入JavaScript代码 使用<script>标签,可

C++primer第十五章. 面向对象编程

面向对象编程基于三个基本概念:数据抽象.继承和动态绑定. 15.1. 面向对象编程:概述 面向对象编程的关键思想是多态性(polymorphism). 之所以称通过继承而相关联的类型为多态类型,是因为在许多情况下可以互换地使用派生类型或基类型的“许多形态”.正如我们将看到的,在 C++ 中,多态性仅用于通过继承而相关联的类型的引用或指针. 继承 派生类(derived class)能够继承基类(baseclass)定义的成员,派生类可以无须改变而使用那些与派生类型具体特性不相关的操作,派生类可以

Flask 学习笔记-第十五章-应用编程接口

(Rich Internet Application,RIA)的架构. 在RIA中,服务器的主要功能(有时是唯一功能)是为客户端提供数据存取服务. 在这种模式中,服务器变成了Web服务或应用编程接口(Application Programming Interface,API). 表现层状态转移(Representational State Transfer,REST)架构崭 露头角,成为Web程序的新宠,因为这种架构建立在大家熟识的万维网 基础之上. Web服务的REST架构方式,并列出了6个符

第五章 面向对象编程设计与开发——续3

5.9--封装 如何隐藏 在python中用双下划线开头的方式将属性隐藏起来(设置成私有的) #其实这仅仅是一种变形操作 #类中所有双下划线开头的名称如_x都会自动形成:_类名_x的形式: class A: _N=0#类的数据属性就应该是共享的,但是语法上是可以把类的数据属性设置成私有的如_N,会变形为_A_N def _init_(self): self._x=10#变形为self._A_X def _foo(self):#变形为_A_foo print('form A') def bar(s

第十五章 并发编程

1.操作系统的发展史 参考:http://www.cnblogs.com/Eva-J/articles/8253521.html 知识点 输入输出 -- 大部分时间都不会占用CPU,但会降低你程序的效率 操作系统的三种基本类型:多道批处理系统.分时系统.实时系统. 现在操作系统 基于多道批处理系统和分时系统 多个程序.作业在遇到IO操作的时候,操作系统会帮助你进行切换 让CPU的利用率得到最大的提高 2.进程 初识进程 进程: 运行中的程序 操作系统 只负责管理调度进程 进程是操作系统中资源分配

第五章 面向对象编程设计与开发——续

5.1   类.实例.属性.方法详解 类的语法 上面的代码其实有问题,属性名字和年龄都写死了,想传名字传不进去. class Person(object): def __init__(self, name, age): self.name = name self.age = age p = Person("Alex", 22) print(p.name, p.age) 为什么有__init__? 为什么有self? 此时的你一脸蒙逼,相信不画个图,你的智商是理解不了的! 画图之前, 你

第五章 面向对象编程设计与开发——续2

5.4--小结 从代码级别看面向对象 1.在没有学习类这个概念时,数据和功能是分离的 def exc1(host,port,db,charset): conn=connect(host,port,db,charset) conn.execute(sql) return xxx def exc2(host,port,db,charset,proc_name) conn=connect(host,port,db,charset) conn.call_proc(sql) return xxx #每次调

第五章(使用对象) 编程题一

单词长度(4分) 题目内容: 你的程序要读入一行文本,其中以空格分隔为若干个单词,以'.'结束.你要输出这行文本中每个单词的长度.这里的单词与语言无关,可以包括各种符号,比如"it's"算一个单词,长度为4.注意,行中可能出现连续的空格. 输入格式: 输入在一行中给出一行文本,以'.'结束,结尾的句号不能计算在最后一个单词的长度内. 输出格式: 在一行中输出这行文本对应的单词的长度,每个长度之间以空格隔开,行末没有最后的空格. 输入样例: It's great to see you h