快速了解JavaScript的BOM模型

基于航天宏图PIE-SAR软件的高分三号(GF-3)SAR影像的预处理 软件官网 航天宏图—国内领先的卫星运营与应用服务提供商(官网) 一、数据导入 数据导入-GF-3-根据模式选择 参数文件导入解压后GF-3数据的XML文件 通道自动填充 设置输出目录 确定 等待,加载图像、自动构建金字塔 二、复数数据转换 强度/幅度特征是SAR影像最主要的特征之一,基于SAR强度/幅度影像可以提取地物目标信息,因此需要将SAR复数数据转换为SAR强度/幅度数据。导入输入影像,设置参数类型,输出目录、命名、类型; 漫长的等待 三、多视 为提... 阅读详情

ECMAScript是JavaScript的核心,而BOM(浏览器对象模型,Browser Object Model)是在Web中使用JavaScript的核心。

在BOM对象中,window对象是最顶层对象,在浏览器环境中它是一个Global全局对象,其它对象是window对象的子对象(属性)。BOM主要用于管理浏览器窗口及窗口之间的通讯。下面是BOM对象的组成结构。

在这里插入图片描述

window对象

window是BOM的核心对象,表示浏览器的一个实例。有双重角色,即是通过JavaScript访问浏览器窗口的一个接口,又是ES规定的Global对象。这意味着在网页中定义的任何一个对象、变量和函数,都以window作为其Global对象。

var age = 29;
function sayAge() {
    console.log(this.age);
}
console.log(window.age);	// 29
sayAge();					// 29
window.sayAge();			// 29

如上所示,在全局作用域中定义的变量和函数都被自动归在了window对象名下。而sayAge()存在于全局作用域中,方法中的this.age被映射到window.age,因此显示的仍然是正确的结果。

然而,定义的全局变量不能通过delete操作符删除,定义在window对象上的属性却可以。

window除了location、navigator、screen、history和document外,还有一些属性。

  • window.console:返回Console对象的引用,可以向浏览器控制台输出日志信息。仅用于调试,不应该给用户呈现。(只读)
  • window.frames:数组对象,列出当前窗口的所有直接子窗口。(只读)
  • window.frameElement:当前窗口嵌入另一个窗口(嵌入<object>、<iframe>),如果当前窗口是顶层,返回null。(只读)
  • window.innerHeight:窗口的视图可见高度(单位:像素),也包括滚动条高度。(只读)
  • window.innerWidth:窗口的视图可见宽度(单位:像素),也包括滚动条的宽度。(只读)
  • window.length:当前窗口中包含框架数量。框架为<frame>与<iframe>。(只读)
  • window.locationbar:检查visibility属性的地址栏对象,用来表示是否可见。(只读)
  • window.localStorage:访问Document源的对象Storage;将数据存储在浏览器会话中。类似sessionStorage,但数据可长期保留;而页面会话结束时,sessionStorage数据会清除。(只读)
  • window.menubar:检查visibility属性的菜单栏对象,用来表示是否可见。(只读)
  • window.outerHeight:整个浏览器窗口的高度(单位:像素)。(只读)
  • window.outerWidth:整个浏览器窗口的宽度(单位:像素)。(只读)
  • window.parent:当前窗口或子窗口的父窗口的引用。(只读)
  • window.personalbar:检查visibility属性的个人工具栏对象,用来表示是否可见。(只读)
  • window.scrollX:页面水平方向滚动距离(单位:像素),window.pageXOffset是别名。(只读)
  • window.scrollY:页面垂直方向已滚动距离(单位:像素),window.pageYOffset是别名。(只读)
  • window.scrollbars:检查visibility属性的滚动条对象,用来表示是否可见。(只读)
  • window.self:指向当前window对象的引用。
  • window.sessionStorage:允许访问当前源的sessionStorage对象。与localStorage相似,不同在于sessionStorage在页面会话结束时清除,而localStorage没有过期时间。
  • window.top:窗口层级最顶层窗口的引用。
  • window.window:window对象本身。

介绍了一些window的属性,下面我们看一下关于window的方法。

消息框

window有三种消息框:警告框 alert、确认框confirm和提示框prompt。

window.alert(message)会显示一个警告对话框,上面显示有指定的文本内容以及一个确定按钮。例如window.alert("警告框来袭");的显示如下:

在这里插入图片描述

window.confirm(message)是一个具有可选消息的模态框。用于验证是否接受用户操作的确认框。

var result = window.confirm("你要离开吗?");
if (result) {
	// 按下确定后执行的操作
	console.log("确定");
} else {
	// 按下取消后执行的操作
	console.log("取消");
}

运行结果:

在这里插入图片描述

window.prompt(text, value) 是用于显示文字信息提示用户输入文字的提示框。

  • text参数为提示用户输入信息的提示内容,可省略。
  • value参数为文本输入框中的默认值,可省略。
var result = window.prompt("你的生日是什么时候的?", "1997-01-01");
if (result == "2011-10-23") {
	alert("你和我生日一样耶!");
}

效果如下:

在这里插入图片描述

点击确定后,文本输入框中文字被返回。如果为空,则返回一个空字符串。点击取消后,返回null。

三个方法都具有堵塞效应,一旦弹出对话框,整个页面就暂停执行,等待用户做出反应。

window还有几种方法控制窗口。例如open()、close()、stop()、moveBy()/moveTo()、resizeBy()/resizeTo()。下面介绍一下他们的功能。

窗口打开 & 关闭

window.open(url, target, features, replace)方法用于创建新的窗口。

  • url参数为新窗口加载的URL。
  • target参数为新窗口的名字。每个窗口都有一个window.name,这里可以指定窗口用于弹窗,如果不存在,新建窗口。这个名字可用作<a>或<form>的属性target的值。字符串中不能含有空白字符。注意:target不是新窗口标题。
  • features参数为字符串值,内容用逗号分隔,参数不能有空格,例如width=200,height=100。
var params = 'scrollbars=no,resizable=no,status=no,location=no,toolbar=no,menubar=no,width=0,height=0,left=-1000,top=-1000';
window.open('/', 'test', params);

features可以设置的值有:

  • left/top:新窗口的最左边(left)与最顶部(top)的距离(单位:像素)。新窗口可见,不能设置在屏幕以外。
  • width/height:新窗口的宽度和高度(单位:像素)。宽高不得小于100。
  • outerWidth/outerHeight:整个浏览器窗口的宽高。(单位:像素)。宽高不得小于100。
  • menubar:是否显示菜单栏。
  • toolbar:是否显示工具栏。
  • location是否显示地址栏。
  • personalbar:是否显示用户安装的工具栏。
  • status:是否显示状态栏。
  • resizable:新窗口是否可调整大小。
  • scrollbars:是否出现滚动条。
  • titlebar:是否显示标题栏。
  • close:是否显示关闭按钮。

同源策略,窗口只可访问相同协议下的内容(相同协议://domain:port)。

window.close()方法用于关闭当前窗口,一般只用来关闭window.open()方法新建的窗口。使用window.closed属性来判断窗口是否被关闭。

在当前窗口中关闭窗口:

window.close();

window.stop()方法等同于单击浏览器的停止按钮。由于脚本加载顺序,该方法不能阻止已经包含在加载中的文档,但能阻止图片、新窗口和延迟加载的对象的加载。

window.stop();

窗口移动

window.moveBy(deltaX, deltaY)方法根据指定的值,移动当前窗口。

  • deltaX:窗口在水平方向移动的像素值。
  • deltaY:窗口在垂直方向移动的像素值。

window.moveTo(x, y)方法将当前窗口移动到指定的坐标位置。

  • x:水平方向移动的横坐标
  • y:竖直方向移动的纵坐标

moveBy()产生的是相对移动,moveTo()产生的是绝对移动。

当符合下列情况时,普通网页中的JavaScript无法通过调用该函数来移动浏览器窗口:

  1. 当前窗口或标签页不是由window.open方法创建的;
  2. 当前标签页所在的窗口包含有多个标签页。

window.resizeBy(xDelta, yDelta)方法用于调整窗口的大小。

  • xDelta:窗口水平方向变化的像素值。
  • yDelta:窗口垂直方向变化的像素值。

window.resizeTo(aWidth, aHeight)方法用于调整窗口的大小。

  • aWidth:整数,表示新的outerWidth(单位:像素)。
  • aHeight:整数,表示新的outerHeight(单位:像素)。

resizeBy()相对大小方式调整窗口大小,resizeTo()绝对大小方式调整窗口大小。

依据下面的规则,普通网页中的JavaScript无法通过调用该函数来调整浏览器窗口大小:

  1. 不能设置哪些不是通过window.open创建的窗口或Tab的大小;
  2. 当一个窗口里面包含有一个以上Tab时,无法设置窗口的大小。

窗口滚动

window.scroll()滚动窗口至文档中的特定位置,
window.scrollBy()按窗口指定偏移量滚动文档,
window.scrollTo()滚动窗口至文档中的特定位置。

上面的三个方法的参数都可以是x-coord和y-coord两个参数,或者options一个参数。

  • x-coord:水平方向像素点横坐标。
  • y-coord:垂直方向像素点纵坐标。

或者

  • options:一个ScrollToOptions字典。
// 在横轴上移动到第100个像素置于窗口左边,在纵轴上移动到第100个像素置于窗口顶部
window.scroll(100, 100);
// 或者
window.scroll({
    top: 100,
    left: 100,
    behavior: 'smooth'
});

options有三个属性:

  • top:垂直方向滚动的像素值
  • left:水平方向滚动的像素值
  • behavior:滚动方式,smooth、instant和auto,默认值auto。

写法也一样,但是功能不一样。window.scrollBy()滚动指定的距离,window.scroll()滚动至文档中的绝对位置,window.scrollTo()实际上和window.scroll()方法是相同的。

打印

window.print()方法打开打印对话框打印当前文档。

在开发项目中,有网页提供打印服务的话,我们可以在页面中设置一个按钮,调用打印功能;但在之前,我们需要判断是否支持打印功能。

if (typeof window.print === 'function') {
	// 支持打印功能
	    document.getElementById('printLink').onclick = function () {
        window.print();
    }
}

弹窗的聚焦/失焦

使用window.focus()和window.blur()方法可以是窗口获得或失去焦点。

还有一些方法,这里就不介绍了。

location

location对象提供当前窗口中加载的文档有关信息,还提供了一些导航功能。即是window对象的属性,也是document对象的属性。还可以解析URL。下面列出一些location的属性。

  • location.href:完整的URL值,允许更新。
  • location.origin:域名标准形式。包含协议、域名、端口号。
  • location.protocol:当前URL的协议,包括冒号(:)。
  • location.host:域名,包含:后面的端口号。
  • location.hostname:域名,不包括端口号。
  • location.port:端口号。
  • location.pathname:URL中路径的部分,从/开始。
  • location.search:URL参数部分,从问号?开始。
  • location.hash:块标识符部分,从#开始。
  • location.username:URL域名前的用户名。
  • location.password:URL域名前的密码。

只有origin属性是只读的,其它属性都可写。

我们给出一个网址http://localhost:8088/mall/?page=1&userid=2#part=top,使用上面的属性来获取它。

location.href;		// http://localhost:8088/mall/?page=1&userid=2#part=top
location.origin;	// http://localhost:8088
location.protocol;	// http:
location.host;		// localhost:8080
location.hostname;	// localhost
location.port;		// 8088
location.pathname;	// /mall/
location.search;	// ?page=1&userid=2
location.hash;		// #part=top

然而location.search获取的是所有内容,没办法逐个获取每个查询字符串参数。我们可以创建一个函数用以解析并返回包含所有参数的对象。

function getQueryArgs() {
    // 取的查询字符串并去掉开头问号
    var qa = (location.search.length > 0 ? location.search.substring(1) : ""),
    // 保存数据的对象
    args = {},
    // 取的每一项
    items = qa.length ? qa.split("&") : [],
    // 每一项和该项的键值
    item = null,name = null,value = null,
    len = items.length;
    // 逐个将每一项添加到args对象中
    for (let i = 0; i < len; i++) {
        item = items[i].split("=");
        name = decodeURIComponent(item[0]);
        value = decodeURIComponent(item[1]);
        if (name.length) {
            args[name] = value;
        }
    }
    return args;
}

注意,如果对location.href写入新的URL地址,浏览器会立刻跳转到这个新地址。

除了上述的属性外,location还有几个方法。

assign

location.assign(url)方法接收URL字符串来使浏览器立即跳转。而参数无效时会报错。

location.assign('http://www.sample.com');

而给window.location和location.href两个属性赋值与调用assign()方法效果一样。

replace

location.replace()与location.assign()方法类似,都是跳转到新的URL,但不会在浏览历史History里面生成新的记录,后退按钮无法回到当前页面。当脚本发现当前是移动设备时,可以使用replace跳转到移动版网页。

// 跳转到新的网址
location.replace('http://www.sample.com');

reload

location.reload(boolean)方法用于重新加载当前页面。当参数为false或为空时,浏览器将该网页从本地缓存重新加载并定位到当前位置。参数为true时,浏览器向服务器重新请求,并定位到顶部(即scroillTop===0)。

location.reload();			// 重新加载(有可能从缓存中加载)
location.reload(true);		// 重新加载(从服务器重新加载)

在reload()之后的代码有可能不会执行,取决于网络延迟或系统资源等因素。最好将reload()放在代码最后一行。

location.toString()方法返回整个URL字符串,相当于读取location.href属性。

navigator对象

navigator用于获取当前浏览器信息。可以使用window.navigator属性检索navigator对象。

  • appCodeName:浏览器的代号名称。Mozilla,Netscape 6和IE5的内部名称都是Mozilla。(只读)
  • appName:浏览器的名称。由于兼容性问题,HTML5规范允许该属性返回Netscape。(只读)
  • appVersion:浏览器版本号。一般不与实际版本对应。(只读)
  • connection:提供NetworkInformation对象来获取设备的网络连接信息。(只读)
  • cookieEnabled:浏览器当前页面是否启用cookie。(只读)
  • geolocation:返回Geolocation对象,可访问设备的位置信息。安全考虑会提示授权。(只读)
  • hardwareConcurrency:浏览器环境拥有的CPU核心数。(只读)
  • keyboard:返回Keyboard对象,提供检索键盘布局图和切换从物理键盘捕获按键的功能。(只读)
  • language:浏览器主语言。(只读)
  • languages:访客所使用的语言数组,按优先顺序排列。第一个元素赋给language,当值改变时,window触发languagechange事件。(只读)
  • mimeTypes:返回MimeTypeArray对象,包含可被识别的MimeType对象的数组。(只读)
  • maxTouchPoints:返回当前设备同时支持触摸接触点的最大数量。(只读)
  • onLine:表示浏览器当前是否联网。(只读)
  • oscpu:返回客户端计算机的操作系统或使用的CPU。在Firefox中可以获取此值。
  • permissions:返回一个可用于查询或更新某些APIs的权限状态的对象。(只读)
  • platform:浏览器所在系统平台类型。不确定此值是否有效。(只读)
  • plugins:返回PluginArray对象,包含浏览器安装的所有插件。(只读)
  • product:当前浏览器产品名称。以兼容为目的,返回"Gecko"值。(只读)
  • serviceWorker:返回ServiceWorkerContainer对象,提供对ServiceWorker的注册、删除、升级和通信的访问。(只读)
  • storage:返回单例StorageManager对象,用于维护数据的持久化存储,大致确定存储数据的空间。(只读)
  • userAgent:返回当前浏览器的用户代理。(只读)
  • vendor:浏览器的供应商。例如Chrome中显示Google Inc.。
  • vendorSub:有关供应商的次要信息。

在介绍一下navigator对象中的一些方法。

javaEnabled

javaEnabled()表明浏览器是否启用Java。是当前配置文件是否允许使用Java,而不是浏览器是否支持Java。

if (window.navigator.javaEnabled()) {
    // 浏览器中Java可用
}

sendBeacon

sendBeacon(url, data)是用于通过HTTP将少量数据异步传输到Web服务器。当传输成功时会返回true。

  • url为发送的地址;
  • data是ArrayBufferView、Blob、DOMString或者FormData类型的数据。

下面的例子展示了一个理论的统计代码——卸载事件处理器中尝试通过一个同步的XMLHttpRequest向服务器发送数据。这导致了页面卸载被延迟。

window.addEventListener('unload', logData, false);
func logData() {
	var client = new XMLHttpRequest();
	client.open("POST", "/log", flase);	// 第三个参数表明是同步的xhr
	client.setRequestHeader("Content-Type", "text/plain;charset=UTF-8");
	client.send(analyticsData);
}

这就是sendBeacon()方法存在的意义。使用sendBeacon()方法会使用户代理在有机会时异步地向服务器发送数据,同时不会延迟页面的卸载或影响下一导航的载入性能。这就解决了提交分析数据时的所有的问题:数据可靠,传输异步并且不会影响下一页面的加载。此外,代码实际上还要比其它技术简单许多!

下面的例子展示了一个理论上的统计代码模式——通过使用sendBeacon()方法向服务器发送数据。

window.addEventListener('unload', logData, false);
function logData() {
	navigator.sendBeacon("/log", analyticsData);
}

registerProtocolHandler

registerProtocolHandler(scheme, url, title)可以让Web站点为自身注册能用于打开或处理特定协议的功能。

  • scheme:包含站点处理协议的字符串。例如,传入"sms"来注册处理SMS文本信息链接。
  • url:处理器的URL字符串。应该包含一个"%"占位符,会被将要受理的文档的escaped链接所替换。这个链接可能是一个真实URL,或者是一个电话号码,邮件地址之类的。
  • title:处理器标题。展示给用户,例如弹出"允许站点处理[scheme]链接吗?"或者在浏览器设置中列出注册的处理器时。

处理器的URL必须以http或者https协议标记开头,最好是https,以满足一些浏览器出于安全考虑的要求。

screen对象

screen对象表示当前屏幕窗口,往往指当前正被渲染的window对象,提供显示设备的信息。用处不大。主要介绍几种属性。

  • availTop:返回浏览器可用空间在屏幕上边的像素值。
  • availLeft:返回浏览器可用空间在屏幕左边的像素值。
  • availWidth:返回浏览器可用空间的水平宽度。
  • availHeight:返回浏览器可用空间的垂直高度。
  • colorDepth:返回屏幕的颜色深度(color depth)。根据CSSOM(CSS对象模型)视图,为兼容起见,该值总为24。
  • height:返回屏幕的高度(单位:像素)。
  • orientation:返回一个ScreenOrientation实例,表示当前屏幕的方向。
  • pixelDepth:返回屏幕的位深度/色彩深度(bit depth)。根据CSSOM(CSS对象模型)视图,为兼容起见,该值总为24。
  • width:返回屏幕的宽度(单位:像素)。

history对象

history对象保存着浏览器的历史记录。出于安全考虑,开发人员无法得知用户浏览器的URL。但能通过历史列表实现后退和前进。下面是history对象主要的属性。

  • length:返回当前窗口历史列表中的URL数量。
  • scrollRestoration:允许Web应用程序在历史列表上显示地设置默认滚动恢复行为。
  • state:history堆栈最上层的状态值。
const scrollRestoration = history.scrollRestoration;
if (scrollRestoration) {
	// 防止自动恢复页面位置
	history.scrollRestoration = 'manual';
} else {
	// 查看当前页面滚动恢复行为
	console.log('The location on the page is not restored, user will need to scroll manually.');
}

还可以通过history提供的方法来访问历史记录。

go

go()方法可以在用户的历史记录中任意跳转。传递数值为跳转的页数。

history.go(-1);		// 返回一页
history.go(2);		// 前进两页

也可以传递历史记录中存在的字符串参数,如果历史记录中不包含传递的字符串,那什么也不做。

history.go("sample.com");

还可以使用 back() 方法后退和使用forward()方法前进来代替go()方法的功能。

注意,移动到以前访问过的页面时,页面通常是从浏览器缓存之中加载,而不是重新要求服务器发送新的网页。

pushState

pushState(state, title, url)方法能够在不加载页面的情况下在历史中添加一条记录。这个方法接收三个参数:

  • state参数是状态对象,与pushState添加的记录相关联。表示浏览器的state属性。
  • title参数是document.title的值,一般设定为null。浏览器大多会忽略。
  • url参数指定新历史记录,用以改变当前url。这个参数不能跨域,即协议,域名,端口必须是相同的,如果出现跨域的情况,即会提示。
history.pushState({id:1}, null, '?page=1');

replaceState

replaceState(stateObj, title, url)方法用来修改history对象的当前记录,它是替换当前页面在浏览器的历史记录。假设当前网页是sample.com/index.html

history.pushState({id:1}, 'title1', '?page=1');	// URL显示为http://sample.com/index.html?page=1
history.pushState({id:2}, 'title2', '?page=2');	// URL显示为http://sample.com/index.html?page=2
history.replaceState({id:3}, 'title3', '?page=3');	// URL显示为http://sample.com/index.html?page=3
history.back();	// URL显示为http://sample.com/index.html?page=1
history.back();	// URL显示为http://sample.com/index.html
history.go(2);	// URL显示为http://sample.com/index.html?page=3

postate事件

当添加或更改历史记录时,会触发popstate事件。如果被激活的历史记录条目是通过对history.pushState()的调用创建的,或者受到对history.replaceState()的调用的影响,popstate事件的state属性包含历史条目的状态的副本。

需要注意的是调用history.pushState()或history.replaceState()不会触发popstate事件。只有在做出浏览器动作时,才会触发该事件,如用户点击浏览器返回按钮(或者在JavaScript代码中调用history.back()或者history.forward()方法)。

总结

BOM是以window对象为依托的浏览器对象模型,它将浏览器当作一个对象,用于与浏览器窗口进行交互。window对象还是Global对象,全局变量和函数都是它的属性和方法,且所有原生的构造函数及其它函数也在它的命名空间下。但每个浏览器厂商都有自己的BOM实现,因此兼容性较差。

关注公众号「海人为记」,回复「资源」即可获得免费资源!
在这里插入图片描述

逆向工程师必备:用MDL绕过游戏保护读取内存数据的完整流程(附POC代码) 本文深入探讨了内核级内存访问技术,重点介绍了如何利用MDL(Memory Descriptor List)机制稳定、隐蔽地绕过游戏反作弊系统读取进程内存。通过对比MmCopyVirtualMemory等方法的优劣,提供了完整的MDL映射实战代码与反检测策略,为逆向工程师在内核态进行安全内存操作提供了专业指导。 阅读详情

相关推荐

Windows 2012 SYSVOL复制失败的处理

题外话:晓原理、知架构、查日志是排错的三件法宝今天在DC1上新建并链接了一个组策略对像,在客户端刷新时,却报下面的错误:“处理组策略失败。Windows无法应用组策略对象LDAP….”如下图所示:于是在客户端用\\domain.com访问,发现\\domain.com\SYSVOL\domain.com\policies下面没有上面报错的组策略对象。这是怎么一回事呢,pin...

weixin_33989780的博客 1669

JavaScript【九】JavaScript BOM(浏览器对象模型)

JavaScript【九】JavaScript BOM(浏览器对象模型)

商务合作/软件定制/学习交流 1048

Linux与Windows双系统,安装完linux后无法通过grub进入Windows的解决方法

先装Windows 10,Windows可正常启动,再装Kali,Kali提示装grub后照装。然而装完后重启发现无Windows选项。

sakurashockwave的博客 6454

全面解析Bot框架:从机器人平台的区别到知名框架

科技巨头诸如 Facebook 和微软已经大规模发布了 Bot 框架,旨在量产聊天机器人。在 Facebook Messenger 上开发了超过 11,000 个聊天机器人,并且有近 23,000 个开发人员注册了 Facebook 机器人引擎。此外,大量初创公司拥有自属开发框架和功能性产品。...

chisuijie5678的博客 1909

在ABAQUS中使用VUMAT子程序实现Hashin失效准则的详细解析与实践:深入探讨复合材料模拟仿真的高级编程技巧

Hashin失效准则是由材料科学家Shlomo Hashin于1962年提出的一种基于能量方法的多向失效理论,主要用于预测复合材料的破坏行为。与传统的单向失效理论不同,Hashin准则考虑了材料内部的多种独立破坏机制,如基体断裂、界面脱粘、纤维断裂等,这些机制在不同应力状态下可能同时或分别发生。通过计算各个机制的能量释放率,Hashin失效准则能够更为准确地预测复合材料在复杂应力状态下的破坏行为。

qq_38334677的博客 1949

AI大模型探索之路-认知篇1-全景透视:揭秘AIGC技术的进化之路

随着人工智能技术的突飞猛进,内容创作方式的发生了革命性的转变;从早期专业人员主导的内容生产,到现如今生成式人工智(AIGC)能创作时代;本篇文章主要讲解AIGC技术的演变历程。

寻道AI,探索AI无限可能! 1648

JavaScript(七)—— BOM 浏览器对象模型

本篇为 JavaScript 系列笔记第七篇,将陆续更新后续内容。参考:黑马程序员JavaScript核心教程,前端基础教程 系列笔记: JavaScript(一)—— 初识JavaScript / 注释 / 输入输出语句 / 变量 / 数据类型 JavaScript(二)—— 运算符 / 流程控制 / 数组 JavaScript(三)—— 函数 / 作用域 / 预解析 / 对象 JavaScript(四)—— 内置对象 / 简单数据类型与复杂类型 JavaScript(五)—— Web APIs 简介.

imByte的博客 995

12027.linux flash驱动之IS25LP01G/IS25WWP01G

一页:512字节 --> 扇区 4096字节 --> 块 32k,64k, 层层递进关系。

写给自己的笔记 2289

javascript中BOM浏览器对象模型详解

主要知识点: BOM 概述 window 对象的常见事件 定时器 JS 执行机制 location 对象 navigator 对象 history 对象 1、BOM概述 1.1 什么是 BOM BOM(Browser Object Model)即浏览器对象模型,它提供了独立于内容而与浏览器窗口进行交互的对象,其核心对象是 window。 BOM 由一系列相关的对象构成,并且每个对象都提供了很多方法与属性。 BOM 缺乏标准,JavaScript 语法的标准化组织是 ECMA,DOM 的标准化组织是 W

十九万里的博客 417

YOLO26全网首发:CVPR2026 MixerCSeg | DEGConv方向引导边缘门控,破解细长裂缝检测难题

DEGConv通过方向先验嵌入、边缘增强卷积和动态门控三大机制,针对性解决了YOLO在处理裂缝类细长、多方向、低对比度目标时的特征提取不足问题,显著提升了裂缝检测的精度与鲁棒性。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1034

百万 Token 压力实测:1M Context 的真实能力边界在哪里?

本文揭示了长上下文模型的性能衰减规律:1M上下文存在"容量曲线"与"质量曲线"的分歧,512K是可靠拐点。通过MRCR测试发现,不同任务类型衰减差异显著——检索任务在512K后性能下降30.6%,而生成任务仅下降5%。研究提出三阶段补偿策略:三明治注入(首尾指令强化)、语义面包屑(位置标记)、引用检查(强制溯源),可将512K-1M区间的可用性提升20%。工程实践表明,中段区域(30-70%位置)是注意力薄弱区,需要特殊处理。最终建议:关键检索任务控制在512K内,关联推理任务可扩展至

liuzhupeng的专栏 338

JavaScript中操作BOM对象重点总结

BOM:浏览器对象模型(Browser Object Model): BOM提供了独立于内容的、可以与浏览器窗口进行互动的对象结构 BOM可实现功能: 弹出新的浏览器窗口 移动、关闭浏览器窗口以及调整窗口的大小 页面的前进、后退   window对象: 1. 常用属性 属性名称 说明 history 有关客...

妖精小狗的博客 4679

我用 Python 监听了自己的键盘,生成击键热力图,看看每天到底在“摸鱼”还是“搬砖”?

数据采集(监听)、持久化(I/O)与可视化展示,必须是三个完全独立的模块,这符合单一职责原则。在多线程读写 Python 字典时,锁住的时间要尽可能短,防止 I/O 线程把高频的监听线程阻塞住。这类涉及底层的代码与“键盘记录木马”只有一线之隔。永远不要把击键记录通过网络上传,所有数据必须localhost消化。人脑对枯燥的 JSON 日志是不敏感的,但对颜色和空间极其敏感。这也是为什么 Prometheus + Grafana 是标配。使用ctypes。

BUG猿的博客 193

复盘---js--BOM

BOM

weixin_70027586的博客 213

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

javascript函数速查

  由于文章内容很多,在这就不多写,请需要的朋友来这看,http://www.weiw.com/article/list.asp?id=339 按字母排序:

不飞则已,一飞冲天 1026

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

初识javescript

Hellow大家好!又到了我们最爱的学习时间(呕),我们今天啊就来简单的了解一下javescript,难度呢肯定是有的,但掌握了学习方法,勤加练习就会轻松很多啦 先来简单了解一下什么是javescript JavaScript是一种基于对象和事件驱动的脚本语言1、JavaScript特点 交互、脚本语言、解释性语言 边执行边解释2、JavaScript组成 ecmascript(规范) bom(浏览器对象) dom(元素对象) ECMAScript是一种语法标准 语法、变量和数据类型、运算符、..

SamaelzzZ的博客 795

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JavaScript 快速入门:从基础语法到 DOM、BOM 与事件交互

本文从前端三剑客 HTML、CSS、JavaScript 的分工讲起,逐步介绍 JavaScript 基础语法、变量类型、流程控制、函数、全局变量与局部变量、对象方法等核心内容。文章重点解释了 JavaScript 如何通过 DOM 操作页面元素、通过 BOM 与浏览器交互,并对事件机制进行了引入说明,适合有一定编程基础或前端入门基础的开发者快速梳理 JavaScript 知识体系。

m0_70325779的博客 1261

【JS笔记】JavaScript语法快速上手 — BOM 和 DOM(四)

【JS笔记】JavaScript语法快速上手 — BOM 和 DOM(四)

leo的博客 1307

快速了解DOM与BOM,以及它们的区别

1. 什么是DOM 文档对象模型(Document Object Model,简称DOM),是 W3C 组织推荐的处理可扩展标记语言(html或者xhtml)的标准编程接口。 ​W3C 已经定义了一系列的 DOM 接口,通过这些 DOM 接口可以改变网页的内容、结构和样式。 DOM是W3C组织制定的一套处理 html和xml文档的规范,所有的浏览器都遵循了这套标准。 2. DOM树 DOM树又称...

小阿兜的博客 2178

JavaScript技术可以分三类 — 学习JS必须了解的精髓

JavaScript的基本组成 学习JavaScript的第一步,在于了解JavaScript的基本组成,了解JavaScript技术当中有哪些类型的知识。 JavaScript = ECMAScript + DOM + BOM 其中ECMAScript表示的是基本语法,包括我们实现JS的基本语法,如变量的声明、基本的语句(if、for、switch等)、函数、参数、作用域、this、原型继承、数组字符串正则等各类方法等。 DOM,表示文档对象模型,其实就是JavaScript语言中,能够操作标签以及标签属

BOM485480的博客 6771

JavaScript 快速入门手册

JavaScript是一门解释型语言,所谓解释型指语言是指不需要被编译为机器码在执行,而是直接浏览器|node中执行。JavaScript中每一个函数对象都存在一个隐藏的对象属性:prototype原型对象函数以普通函数调用,prototype没有任何作用函数以构造函数调用,new 构造函数(...);

慈様 2万+

JavaScript小白入门篇(二、高级语法之 BOM 详解)

????在JavaScript小白入门篇(一、基本语法详解) 入口 我们了解了ECMAScript的基本语法

qq_42878218的博客 2165

JS快速入门:JSON、BOM、DOM、事件监听

本篇文章适合具有java基础的学者进行参考学习,目的在于帮助学者快速了解JS中的JSON、DOM、BOM和事件监听。如果有不妥的地方欢迎大佬指正。

toufahuacai的博客 1256

JavaScript基础——BOM和DOM

BOM的核心对象是window对象,它代表了浏览器窗口,并提供了许多属性和方法来操作窗口、导航、处理事件等。可以通过innerTEXT属性来设置元素内部的内容,该属性会将后面字符串中的内容原样修改到元素中去。通过DOM的对象和方法可以完成对网页中元素的增删改,让网页产生动态效果。由于元素的 ID 在指定时必须是独一无二的,因此这是快速访问特定元素的有效方法。方法,它将返回的是以当前元素为根节点,所有指定类名的子元素。的方法时才能起作用,而在 DOM 中的其他元素上无法生效。对象是文档本身的根。

T030606的博客 1624

javaScript快速入门之BOM

文章目录BOMBOM对象WindowLocationHistoryScreeen BOM 浏览器对象模型 BOM可以使我们通过JS操作浏览器 在BOM为我们提供一组对象,用来完成对浏览器的操作 BOM对象 Window 代表的是整个浏览器的窗口,同时window也是网页中的全局对象 setInterval(); 定时调用,每隔一段时间执行一次 参数 1.回调函数,该函数没隔...

qq_42992704的博客 346

十本经典JavaScript书籍

十本经典JavaScript书籍 同步滚动: 一:《JavaScript权威指南(第六版)》 这本书是程序员学习核心JavaScript语言和由Web浏览器定义的JavaScript API的指南和综合参考手册。第6版涵盖HTML 5和ECMAScript 5。很多章节完全重写,以便与时俱进,紧跟当今的最佳Web开发实践。本书新增章节描述了jQuery和服务器端JavaScript。适合那些希望学习Web编程语言的初、中级程序员和希望精通JavaScript的JavaScript程序员阅读。 i

前端视听 2万+
上一篇: JavaScript DOM编程艺术(第2版)的简单总结
下一篇: 讲讲Java8的Optional类
hireny
博客等级 码龄12年 1粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值