安全矩阵

 找回密码
 立即注册
搜索
楼主: Pluto

李佳瑞学习日记

[复制链接]

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-3-15 23:42:04 | 显示全部楼层
Group by 分组查询
需求:先查出学生表,在将学生表以性别进行分组
# 查出所有学生
select * from students;
# 按gender字段来进行分组查询
select gender from students group by gender;
group by + group_concat()
根据分组结果,使用group_concat()存放每一个分组中某字段的集合
需求:根据性别字段,列出性别所对应姓名的结合
select gender,group_concat(name) from students group by gender;
Group + 聚合函数
聚合函数在和group by结合使用的时候 统计的对象是每一个分组
分别统计性别为男/女的人年龄平均值
select gender,avg(age) from students group by gender;
group by + with rollup
在最后新增一行,来记录当前表中该字段对应的操作结果,一般是汇总结果
分别统计性别为男/女的人的个数
select gender,count(*) from students group by gender with rollup;
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-3-17 00:17:54 | 显示全部楼层
今天看的是连接查询
当我们需要的数据来自多张表时,需要将多张表连接在一起进行查询
分类:内连接,左连接,右连接



对于外连接 outer关键字可以省略
select * from 表1 inner或left或right join 表2 on 表1.列 运算符 表2.列
内连接:inner join
查询结果是返回两个表的交集
使用内连接查询班级表与学生表
select * from students inner join classes on students.cls_id = classes.id;
左连接:left join
左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录。右表记录不足的地方均为NULL
使用左连接查询班级表与学生表
select * from students left join classes on students.cls_id = classes.id;
右连接:right join
左表只会显示符合搜索条件的记录,而右表的记录将会全部表示出来。左表记录不足的地方均为NULL。
使用右连接查询班级表与学生表
select * from students right join classes on students.cls_id = classes.id;
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-3-17 23:40:27 | 显示全部楼层
今天看了数据库编程
使用程序代码对数据进行增删改查,就是数据库编程
为了给数据库添加数据,我们必须要学习数据库编程
从网上了解到Python操作mysql的步骤

Connect方法
用于建立与数据库的连接 调用pymysql模块中的connect()方法
conn=connect(参数列表)
参数host:连接的mysql主机,如果本机是‘localhost等价于127.0.0.1'
参数port:连接的mysql主机的端口
参数user:连接的用户名
参数password:连接的密码
参数database:数据库的名称
参数charset:通信采用的编码方式,推荐使用utf8
这些我们寒假在校时就通过Navicat
进行了一些练习
Cursor游标对象
获取Cursor对象
        调用Connection对象的cursor()方法   
        cs =conn.cursor()
使用游标执行SQL语句
        cs.execute(sql) 执行SQL语句,对数据进行增删改查
获取数据
        获取数据 cs.fetchone() 或者 cs.fetchall()       
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-3-18 23:55:04 | 显示全部楼层
今天看的是MySQL中的视图、事务和索引
视图是虚拟的表,是通过select查询后返回的结果集
只查询语句执行的结果,不存储具体的数据
作用:操作方便,对于查询操作,减少复杂的SQL语句,增强可读性
事务是不可分隔操作的基本工作单元,要么完全地执行,要么完全地都不执行。
例子:银行转账案例
事务有四大特点
原子性:操作要么全部全部成功提交,要么全部失败回滚
一致性:数据库总是从一个一致性的状态转换到另一个一致           性的状态
隔离性:数据库为每一个用户开启的事务,不能被其他事务            的操作所干扰,多个并发事务之间要相互隔离
持久性:持久性是指一个事务一旦被提交了,那么对数据库           中的数据的改变就是永久性的
索引概念:就是数据库的数据结构,通过索引可以快速查询海量数据
更通俗的说,数据库索引好比是一本书前面的目录,通过缩小数据的查询范围,来实现快速查询的目的
pymysql的使用下面是这几天学习的一个例子  通过pymysql完成数据查询

```python
from pymysql import connect
```

Connection 对象

```python
conn=connect(参数列表)

host:连接的mysql主机,如果本机是'localhost'
port:连接的mysql主机的端口,默认是3306
database:数据库的名称
user:连接的用户名
password:连接的密码
charset:通信采用的编码方式,推荐使用utf8
```

- 关闭连接    `conn.close()`
- 提交数据   `conn.commit()`
- 撤销数据   `conn.rollback()`
- 通过连接获取游标    `cur = conn.cursor()`返回Cursor对象,用于执行sql语句并获得结果



Cursor游标对象

- 获取Cursor对象

  ```
    # 调用Connection对象的cursor()方法    
    cur =conn.cursor()
  ```

目的: **执行sql语句**(使用频度最高的语句为select、insert、update、delete)

- 使用游标执行SQL语句

`execute(operation [, parameters ])` 执行SQL语句,**返回受影响的行数**,主要用于执行insert、update、delete语句,也可以执行create、alter、drop等语句

- 关闭游标   `cur.close()`

- 获取结果集中的一条

    `cur.fetchone()`返回一个元组 形如 (1,'妲己',18)

- 获取结果集中的所有

    `cur.fetchall()`执行查询时,获取结果集的所有行,一行构成一个元组,再将这些元组装入一个元组返回 形如((1,'公孙离',20),(2,'妲己',18))



### pymysql完成数据查询

```mysql
import pymysql

# 创建和数据库服务器的连接 服务器地址   端口    用户名     密码  数据库名 通信使用字符和数据库字符集一致
conn = pymysql.connect(host='localhost', port=3306, user='root', password='mysql',database='python_test_1', charset='utf8')

# 获取游标
cursor = conn.cursor()

# 执行SQL语句 返回值就是SQL语句在执行过程中影响的行数
sql = """select * from hero;"""

row_count = cursor.execute(sql)
print("SQL语句执行影响的行数%d" % row_count)

# 取出结果集中一行  返回的结果是一行 (1, '妲己', 2)
# print(cursor.fetchone())

# 取出结果集中的所有数据  返回 ((一行数据),(),())
# ((1, '妲己', 2), (2, '李白', 1), (3, '程咬金', 3), (4, '亚瑟', 5), (5, '荆轲', 99))
for line in cursor.fetchall():
    print(line)

# 关闭游标
cursor.close()

# 关闭连接
conn.close()
```

### pymysql完成对数据库的增删改

```python
import pymysql

conn = pymysql.connect(host='127.0.0.1',port=3306,user='root',password='mysql',db='python_test_1', charset='utf8')

# 通过连接获取游标
cursor = conn.cursor()


# sql = "delete from hero where id = 5;"
# sql = insert into hero (name) values ('西部大坏蛋孙悟空');
sql = "update hero set kongfuid=444 where id = 4;"

row_count = cursor.execute(sql)
print("SQL语句执行影响的行数%d" % row_count)

# 提交数据到数据库
# conn.commit()

# 回滚数据到什么都不做的状态 即撤销刚刚的修改
conn.rollback()

# 关闭游标和连接
cursor.close()
conn.close()
```例子是从网上找来练习的
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-3-19 23:51:43 | 显示全部楼层
今天看了一下数据结构与算法分析,觉得这个挺难的(看不太懂,只是了解一下,图片是为方便理解从网上找的)
首先是数据结构,它由线性结构与非线性结构组成
线性结构:在存储关系上,每个元素(每个节点)最多有一个前驱和一个后继(除了首节点,尾节点之外)

非线性结构表:
树形结构:在存储关系上,每个元素(每个节点)最多有一个前驱,但是可以有多个后继(首节点除外)
图形结构:在存储关系上,每个元素(每个节点)有多个前驱和多个后继

还有算法
数据结构往往同高效的检索算法息息相关。我们把数据按照某种特定的规则存储好了,那就完事了吗?没有。我们存储数据主要是为了之后更好的查找数据,更方便的搜索数据,这就涉及到检索算法。

算法就是: 解决问题的思路 ,完成一个功能模块,所用的程序和逻辑。

算法分为:时间复杂度和空间复杂度
      时间复杂度 : 代码执行的时间
      空间复杂度 : 代码执行的空间
看了一个案例

如果 a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),求出所有a、b、c可能的组合?        
还没有弄清楚,明天在看一下子。
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-3-20 23:07:03 | 显示全部楼层
发现昨天看的数据结构太难,现在学习有点好高骛远,所以继续打基础,本来想看一下PHP,但发现如果很熟悉HTML和css学习PHP会简单一点,所以今天继续看css的知识,今天看了css的浏览器兼容问题hack
Hack:我们为了获得统一的页面效果,就需要针对不同的浏览器或不同版本写特定的CSS样式,我们把这个针对不同的浏览器/不同版本写相应的CSS code的过程,叫做CSS hack!
CSS Hack大致有3种表现形式,CSS属性前缀法、选择器前缀法以及IE条件注释法(即HTML头部引用if IE)Hack,实际项目中CSS Hack大部分是针对IE浏览器不同版本之间的表现差异而引入的。
属性前缀法(即类内部Hack):例如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",IE6~IE10都认识"\9",但firefox前述三个都不能认识。

选择器前缀法(即选择器Hack):例如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。

IE条件注释法(即HTML条件注释Hack):针对所有IE(注:IE10+已经不再支持条件注释): <!--[if IE]>IE浏览器显示的内容 <![endif]-->,针对IE6及以下版本: <!--[if lt IE 6]>只在IE6-显示的内容 <![endif]-->。这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。
CSS hack方式一:条件注释法
只在IE下生效
        <!--[if IE]>
        这段文字只在IE浏览器显示
        <![endif]-->
只在IE6下生效
        <!--[if IE 6]>
        这段文字只在IE6浏览器显示
        <![endif]-->
只在IE6以上版本生效
        <!--[if gte IE 6]>
        这段文字只在IE6以上(包括)版本IE浏览器显示
        <![endif]-->
只在IE8上不生效
        <!--[if ! IE 8]>
        这段文字在非IE8浏览器显示
        <![endif]-->
非IE浏览器生效
        <!--[if !IE]>
        这段文字只在非IE浏览器显示
        <![endif]-->
CSS hack方式二:类内属性前缀法
“\9″ IE6/IE7/IE8/IE9/IE10都生效

“\0″ IE8/IE9/IE10都生效,是IE8/9/10的hack

“\9\0″ 只对IE9/IE10生效,是IE9/10的hack

“-″减号是IE6专有的hack

+  IE7识别的hack方法
CSS hack方式三:选择器前缀法
选择器前缀法是针对一些页面表现不一致或者需要特殊对待的浏览器,在CSS选择器前加上一些只有某些特定浏览器才能识别的前缀进行hack。
*+html *+前缀只对IE7生效
@media screen\9{...}只对IE6/7生效
@media \0screen {body { background: red; }}只对IE8有效
@media \0screen\,screen\9{body { background: blue; }}只对IE6/7/8有效
@media screen\0 {body { background: green; }} 只对IE8/9/10有效
@media screen and (min-width:0\0) {body { background: gray; }} 只对IE9/10有效
@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {body { background: orange; }} 只对IE10有效
CSS-opacity 属性
该属性用于设置元素的不透明度级别,所有的浏览器都支持这个属性。
语法:opacity: value|inherit;
value :规定不透明度。从 0.0 (完全透明)到 1.0(完全不透明)。
inherit:应该从父元素继承 opacity 属性的值。
IE8 以及更早的版本使用滤镜 filter:alpha(opacity=x)。x 能够取的值从 0 到 100。值越小,越透明。
PHP还没有看,完全看完HTML和css的知识再去学吧。
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-3-20 23:07:38 | 显示全部楼层
发现昨天看的数据结构太难,现在学习有点好高骛远,所以继续打基础,本来想看一下PHP,但发现如果很熟悉HTML和css学习PHP会简单一点,所以今天继续看css的知识,今天看了css的浏览器兼容问题hack
Hack:我们为了获得统一的页面效果,就需要针对不同的浏览器或不同版本写特定的CSS样式,我们把这个针对不同的浏览器/不同版本写相应的CSS code的过程,叫做CSS hack!
CSS Hack大致有3种表现形式,CSS属性前缀法、选择器前缀法以及IE条件注释法(即HTML头部引用if IE)Hack,实际项目中CSS Hack大部分是针对IE浏览器不同版本之间的表现差异而引入的。
属性前缀法(即类内部Hack):例如 IE6能识别下划线"_"和星号" * ",IE7能识别星号" * ",但不能识别下划线"_",IE6~IE10都认识"\9",但firefox前述三个都不能认识。

选择器前缀法(即选择器Hack):例如 IE6能识别*html .class{},IE7能识别*+html .class{}或者*:first-child+html .class{}。

IE条件注释法(即HTML条件注释Hack):针对所有IE(注:IE10+已经不再支持条件注释): <!--[if IE]>IE浏览器显示的内容 <![endif]-->,针对IE6及以下版本: <!--[if lt IE 6]>只在IE6-显示的内容 <![endif]-->。这类Hack不仅对CSS生效,对写在判断语句里面的所有代码都会生效。
CSS hack方式一:条件注释法
只在IE下生效
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-3-21 23:50:43 | 显示全部楼层

今天看的是JavaScript中的DOM编程
BOM 也叫浏览器对象模型,它提供了很多对象,用于访问浏览器的功能
浏览器对象BOM
window对象的属性,方法
History对象在浏览器历史记录中导航
Loaction对象
Navigator对象
浏览器检测
利用userAgent检测
浏览器对象 - window对象
  window对象
BOM 的核心对象是 window,它表示浏览器的一个实例。window 对象处于 JavaScript 结构的最顶层,对于每个打开的窗口,系统都会自动为其定义 window 对象

   window操作窗口:
           -- window.open() - 打开新的窗口         window.close() - 关闭当前窗口
与对话框有关的方法
window.alert(String)

Boolean window.confirm(String)

Strinwindow.prompt(String)

窗口的位置和大小
用来确定和修改 window 对象位置的属性和方法有很多。IE、Safari、Opera 和 Chrome 都提供了 screenLeft 和 screenTop 属性,分别用于表示窗口相对于屏幕左边和上边的位置。 Firefox 则在 screenX 和 screenY 属性中提供相同的窗口位置信息,Safari 和 Chrome 也同时 支持这两个属性
跨浏览器检测窗口大小的方法 :
var leftX = (typeof screenLeft == 'number') ? screenLeft : screenX;
var topY = (typeof screenTop == 'number') ? screenTop : screenY;
窗口页面大小,Firefox、Safari、Opera 和 Chrome 均为此提供了 4 个属性:innerWidth 和 innerHeight,返回浏览器窗口本身的尺寸;outerWidth 和 outerHeight,返回浏览器窗口本身及边框的尺寸
浏览器对象BOM - History对象
History对象
      window.history 对象包含浏览器的历史(url)的集合
History方法
      history.back() - 与在浏览器点击后退按钮相同
      history.forward() - 与在浏览器中点击按钮向前相同
      history.go() - 进入历史中的某个页面
浏览器对象BOM - Location对象
Location对象
      window.location对象用于获取当前页面的地址(URL),并且把浏览器重新定向到新的页面
Location对象属性
      location.hostname 返回 web 主机的域名
      location.pathname 返回当前页面的路径和文件名
      location.port 返回web主机的端口
      location.protocol 返回所使用的 web 协议 (http:// 或 http://)
      location.href 属性返回当前页面的URL
      location.assign() 方法加载新的文档
浏览器检测Navigator
浏览器检测
由于每个浏览器都具有自己独到的扩展,所以在开发阶段来判断浏览器是一个非常重要 的步骤。虽然浏览器开发商在公共接口方面投入了很多精力,努力的去支持最常用的公共功 能;但在现实中,浏览器之间的差异却是非常多的,因此客户端检测除了是一种补救措施,更是一种行之有效的开发策略
浏览器检测Navigator
navigator 对象
navigator对象,现在已经成为识别客户端浏览器的事实标准。与之前的 BOM 对象一样,每个浏览器中 的 navigator 对象也都有 一套自己的属性

部分navigator的属性:
属性                说明
appName                完整的浏览器名称和版本信息
platform                浏览器所在的系统平台
plugins                浏览器中安装的插件信息的数 组
userAgent        浏览器的用户代理字符串
userLanguage        操作系统的默认语言
利用userAgent检测
用户代理检测:
用户代理检测通过检测用户代理字符串来确定实际使用的浏览器。在每一次 HTTP 请求 过程中,用户代理字符串是作为响应首部发送的,而且该字符串可以通过 JavaScript 的 navigator.userAgent 属性访问。 用户代理代理检测,主要通过 navigator.userAgent 来获取用户代理字符串的,通过这组 字符串,我们来获取当前浏览器的版本号、浏览器名称、系统名称
下面是关于所学的练习
HTML
<!DOCTYPE html>
<html>
        <head>
                <meta charset="utf-8" />
                <title></title>
                <script type="text/javascript">
                        window.onload = function () {
                                // 拿到input
                                var btns = document.getElementsByTagName('input');
                                var newHtml = null;
                                // 打开一个窗口
                                btns[0].onclick = function() {
                                       
                                       
                                        // open() : 打开新的window;
                                        //   默认状态 : 打开 : 空白的 新的 界面 ,
                                        //   参数: 1、URL 2、 打开的方式
                                        //  返回值 :打开的 window;
                                       
//                                        newHtml = window.open('https://www.baidu.com/','_self');
                                       
                                        newHtml = window.open();
                                        newHtml.document.body.style.background = 'red';
                                       
                                       
                                }
                               
                                // 关闭
                                btns[1].onclick = function() {
                                       
                                       
//                                        alert("1");
                                        window.close();
                                       
                                       
                                       
                                }
                               
                                // 关闭其他窗口
                                btns[2].onclick = function() {
                                       
                                       
                                        newHtml.close();
                                       
                                }
                        }
                </script>
        </head>
        <body>
                <input type="button" value="点击打开一个新的窗口" />
               
                <input type="button" value="关闭" />
               
                <input type="button" value="关闭其他窗口" />
               
        </body>
</html>
Project
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
        <name>BOM编程</name>
        <comment>Create By HBuilder</comment>
        <projects>
        </projects>
        <buildSpec>
                <buildCommand>
                        <name>com.aptana.ide.core.unifiedBuilder</name>
                        <arguments>
                        </arguments>
                </buildCommand>
        </buildSpec>
        <natures>
                <nature>com.aptana.projects.webnature</nature>
        </natures>
        <filteredResources>
                <filter>
                        <id>1498125339485</id>
                        <name></name>
                        <type>10</type>
                        <matcher>
                                <id>org.eclipse.ui.ide.orFilterMatcher</id>
                                <arguments>
                                        <matcher>
                                                <id>org.eclipse.ui.ide.multiFilter</id>
                                                <arguments>1.0-projectRelativePath-matches-false-false-bin</arguments>
                                        </matcher>
                                        <matcher>
                                                <id>org.eclipse.ui.ide.multiFilter</id>
                                                <arguments>1.0-projectRelativePath-matches-false-false-setting</arguments>
                                        </matcher>
                                </arguments>
                        </matcher>
                </filter>
        </filteredResources>
</projectDescription>
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-3-23 00:26:55 | 显示全部楼层
今天继续看BOM编程
之前看的有很多不懂得知识点 下面总节出来了
浏览器事件:
        -onload事件
        -onunload事件
        -onblur事件
        -onfocus事件
定时器
        -setInterval()
        -setTimeout()

浏览器对象 - 计时器
计时事件:
     通过使用javaScript,我们有能力做到在一个设定的时间间隔之后来执行代码,而不是函数被调用后立即执行,这种方法称之为计时事件
计时方法
      1):setInterval() - 间隔指定的毫秒数不停的执行指定代码
            clearInetrval() -  方法用于停止 setInterval()方法执行的函数代码
      2):setTimeout() - 暂停指定的毫秒数后执行指定的代码
        clearTimeout() 方法用于停止执行setTimeout()方法的函数代码
window对象的各种属性
parent属性
self属性
top属性
window属性
opener属性

在应用有frameset或者iframe的页面时,parent是父窗口,top是最顶级父窗口(有的窗口中套了好几层frameset或者iframe),self是当前窗口, opener是用open方法打开当前窗口的那个窗口。

parent属性
描述:
        获取对象层次中的父窗口
window.parent
功能:返回父窗口。
语法:window.parent
注:如果窗口本身是顶层窗口,parent属性返回的是对自身的引用。
在框架网页中,一般父窗口就是顶层窗口,但如果框架中还有框架,父窗口和顶层窗口就不一定相同了。
window.parent是iframe页面调用父页面对象,当我们想从iframe内嵌的页面中访问外层页面是可以直接利用window.parent获取
self属性
描述:
         获取对当前窗口或框架的引用。
window.self
功能:是对当前窗口自身的引用。它和window属性是等价的。
语法:window.self
注:window、self、window.self是等价的。
top属性
描述:
        获取最顶层的祖先窗口。
window.top
功能:返回顶层窗口,即浏览器窗口。
语法:window.top
注:如果窗口本身就是顶层窗口,top属性返回的是对自身的引用。
window
描述:
         window 属性等价于 self 属性,它包含了对窗口自身的引用。
window
功能:对自身窗口的引用
语法:window
opener属性
描述:
       设置或获取创建当前窗口的窗口的引用。
window.opener
功能:opener是用open方法打开当前窗口的那个窗口。
语法:window.opener

代码提示:
      window.opener.close()将关闭源(父)窗口
      *window.opener是window.open()或者超链接打开的子页面调用父页面的对象

最后 总结一下
window.parent与window.top的用法:
1.window.location.href,location.href是本页面跳转;
2.parent.location.href是上一层页面跳转
3.top.location.href是最外层页面跳转

举例说明:
如果A,B,C,D都是jsp,D是C的iframe,C是B的iframe,B是A的iframe,如果D中js这样写到:location.href --D页面跳转      parent.location.href -- C页面跳转   top.location.href --A页面跳转

小结:window.parent父窗口对象
          window.top第一个父窗口对象
回复

使用道具 举报

7

主题

139

帖子

588

积分

高级会员

Rank: 4

积分
588
 楼主| 发表于 2020-3-23 23:53:32 | 显示全部楼层
今天没有学习太多新的东西,看了浏览器的兼容问题,照着视频练习了一下
<!DOCTYPE html>
<html>
        <head>
                <meta charset="utf-8" />
                <title></title>
                <script type="text/javascript">
                        window.onload = function() {
                               
                                // 可是区域 : 宽高  clientHeight
//                                alert(document.documentElement.clientHeight);
//                                以前的谷歌浏览器支持的
//                                alert(document.body.clientHeight);  
                               
                       
                                        // 滚动宽高:
                                        // 火狐浏览器支持documentElement.scrollTop
//                                alert(document.documentElement.scrollTop);
                                        // 谷歌浏览器支持
//                                        alert(document.body.scrollTop);
//                                  做兼容
                          var str = document.documentElement.scrollTop || document.body.scrollTop;
                                       
//                        alert(str);
                               
                                var obody = document.getElementsByTagName('body')[0];
                               
//                                alert(obody.scrollHeight);
                               
                                //   clientHeight : 可视高度;
                                //   scrollTop : 滚动条的滑动距离
                                //   scrollHeight : 内容的高度 针对于 标签 ; 包括: Height + padding ,注意 : border + margin
                                //   offsetHeight : 占位高度 : Height+ padding + border :   margin不算
                                alert(obody.offsetHeight);
                               
                               
                        }
                </script>
               
               
        </head>
        <body style="height: 2000px; margin: 10px; border: 20px solid red;">
               
        </body>
</html>
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|安全矩阵

GMT+8, 2024-3-29 14:48 , Processed in 0.017434 second(s), 17 queries .

Powered by Discuz! X4.0

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表