BOM

本文详细介绍了BOM中用于获取窗口位置的screenLeft、screenTop属性,以及如何获取浏览器视图区大小。同时,通过代码示例展示了窗口移动、大小调整和URL操作的基本方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 BOM

窗口位置

screenLeft(screenX)、screenTop(screenY)分别用于表示窗口相对于屏幕左边和上边的位置.

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>CSS z-index Property</title> 
<script type = "text/javascript">
window.onload = function(){
	//FF只支持screenX和screenY
	//IE支持screenLeft和screenTop
	//Safari 和Chrome同时支持以上两个属性。虽然Opera同时支持以上两个属性,但是二者意义不相同。建议不要在Opera中使用
	var leftPos = (typeof window.screenLeft == "number")?window.screenLeft:window.screenX;
	var topPos = (typeof window.screenTop == "number")?window.screenTop:window.screenY;
	console.log("leftPos:"+leftPos);
	console.log("topPos:"+topPos);
	//全屏时运行结果:FireFox、Chrome、Safari都是-4 -4,
	//而IE中leftPos:0,topPos的值根据工具栏高度不同,值发生变化。
}
</script>
</head> 
<body>
	testPositon
</body>

</html>

 窗口大小(浏览器视图区的大小,即减去减去边框的大小)

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8" /> 
<title>BOM</title> 
<script type = "text/javascript">
window.onload = function(){
	/*浏览器视图区的大小(减去边框宽度)*/
	//Firefox Safari Chrome
	var pageWidth = window.innerWidth,
		pageHeight = window.innerHeight;
	
	//IE
	if(typeof pageWidth != "number"){
		if(document.compatMode == "CSS1Compat"){
			//标准模式
			pageWidth = document.documentElement.clientWidth;
			pageHeight = document.documentElement.clientHeight;
		}else{
			//混杂模式
			pageWidth = document.body.clientWidth;
			pageHeight = document.body.clientHeight;
		}
	}
}
</script>
</head> 
<body>
	testPositon
</body>

</html>
 

 

window.moveBy(0,100);
	window.moveTo(200,300);
	window.resizeTo(100,100);
	window.resizeBy(200,300);

 以上四个方法在某些浏览器中被禁用

location对象以下是所有属性(可读写):

注意以下两端代码中search和hash输出值的不同

<script type="text/javascript">
window.onload = function(){
	//search:?name=maoting
	//hash:#aia_test
	location.href = "http://127.0.0.1:8020/frameset/location/subfameLeft.html?name=maoting#aia_test";
	for(var a in location){
		console.log(a);
		console.log(location[a]);
	}
}
<script type="text/javascript">
window.onload = function(){
	//search:
	//hash:#aia_test?name=maoting
	location.href = "http://127.0.0.1:8020/frameset/location/subfameLeft.html#aia_test?name=maoting";
	for(var a in location){
		console.log(a);
		console.log(location[a]);
	}
}
</script>

使用location对象可以通过很多方式来改变浏览器的位置。

location.assign("http://www.wrox.com");
//或者
location.href="http://www.wrox.com";
//或者
window.location="http://www.wrox.com";

 重新加载页面

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

  navigator对象

它的属性通常用于检测显示页面的浏览器类型,常用属性有userAgent(浏览器的用户代理字符串)等

 

screen对象

包含有关客户端显示屏幕的信息。常用属性:

availHeight:返回显示屏幕的高度 (除 Windows 任务栏之外)。

availWidth:返回显示屏幕的宽度 (除 Windows 任务栏之外)。

 

 

 

 

03-15
### 关于 Byte Order Mark (BOM) 的技术概念 Byte Order Mark (BOM),即字节顺序标记,是一种用于表示Unicode编码文件中字节顺序的特殊字符。它通常出现在文件开头,帮助解析器识别文件使用的具体Unicode编码形式(如 UTF-8、UTF-16 或 UTF-32)。尽管 BOM 对某些程序透明无影响,但在处理文本时可能会引发兼容性问题。 #### BOM 的作用与常见编码关联 在 Unicode 编码标准下,BOM 被定义为 U+FEFF 字符,在不同编码中的表现如下: - **UTF-8**: 表现为三个字节序列 `EF BB BF`。 - **UTF-16 (BE)**: 表现为两个字节序列 `FE FF`。 - **UTF-16 (LE)**: 表现为两个字节序列 `FF FE`[^4]。 对于 Python 来说,默认支持多种编码方式,并允许开发者通过字符串指定具体的编码名称来读取或写入带 BOM 文件的内容[^1]。 #### 如何处理带有 BOM 的文本文件? 当遇到含有 BOM 的文件时,可以采用以下几种方法进行处理: ##### 方法一:使用 Python 自动移除 BOM Python 提供了内置的支持机制,能够自动检测并跳过 BOM 序列。例如,可以通过设置参数 `'utf-8-sig'` 实现这一功能: ```python with open('file_with_bom.txt', mode='r', encoding='utf-8-sig') as file: content = file.read() ``` 上述代码片段会先尝试寻找并去除可能存在的 BOM 标记后再继续正常操作数据流。 ##### 方法二:手动删除 BOM 如果需要更精细控制或者不希望依赖特定库函数,则可以选择手工实现逻辑清除掉这些额外标志位。下面展示了一个简单的例子说明如何做到这一点: ```python def remove_bom(file_path): import codecs bom_bytes = b'\xef\xbb\xbf' with open(file_path, 'rb') as f: raw_data = f.read(len(bom_bytes)) if raw_data != bom_bytes: raise ValueError("File does not start with expected BOM.") # Continue reading rest of the file after skipping over BOM bytes. with open(file_path, 'r', newline='', encoding='utf-8') as cleaned_file: return cleaned_file.readlines() lines_without_bom = remove_bom('./example.txt') print(lines_without_bom[:5]) # Print first five lines post-BOM removal process. ``` 此脚本首先验证目标文档确实存在预期类型的 BOM;随后才执行进一步的动作以忽略该部分而专注于实际有效载荷的数据上[^2]。 #### 总结 虽然 BOM 可以为跨平台间交换提供便利条件,但也增加了复杂度以及潜在错误风险。因此了解其工作原理及其应对策略是非常重要的技能之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值