BOM

将窗口移动到屏幕左上角:window.moveTo(0,0) 

将窗口移动到(100,50):window.moveTo(100,50)

将窗口向下移动100像素:window.moveBy(0,100)

将窗口向上移动100像素:window.moveBy(0,-100)

将窗口向左移动100像素:window.moveBy(-100,0)

将窗口向右移动100像素:window.moveTBy100,0)

opera和只能对最外层的window对象使用

浏览器窗口新宽度和高度:window.resizeTo(10,100);

新窗口和原窗口宽度和高度之差:window.resizeBy(10,100);



导航和打开窗口

var w=window.open("http://www.baidu.com","topframe")

调整大小:w.resizeTo(100,100);

移动位置:w.moveTo(100,100);

关闭新打开的窗口w.close();

alert(w.closed;)  //true

alert(w.opener==window);  //true


确定弹出窗口是否被浏览器内置的屏蔽程序阻止

var a=window.open("http://www.baidu.com","_blank");

if(a==null){

alert("the popup was blocked");

}


如果是浏览器扩展或其他程序阻止的弹出窗口,那么window.open()通常会抛出一个错误。因此,要想准确的检测出弹出窗口是否被屏蔽,必须在检测返回值的同时,将对window.open()的调用封装在一个try-catch块中。

var  blocked=false;

try{

var a=window.open("http://www.baidu.com","_blank");

if(a==null){

blocked=true;

}catch (ex){

blocked=true;

}

}

if(blocked){

alert("the popup was blocked");

}

超时调用

setTimeout();两个参数,一个要执行的代码,另一个执行代码前需要等待多少毫秒。

//不建议传递字符串

setTimeout("alert('hello')",1000);

//推荐的调用方式

var timeOutId=setTimeout(function(){

alert('hello'),1000);

},1000);

//取消尚未超时的调用

clearTimeout(timeOutId);

间歇调用

setInterval(function(){

alert('hello')

},1000);


取消间歇调用的重要性远远高于超时调用,因为间歇调用不加干涉的情况下,间歇调用会一直执行到页面卸载

var num=0;
var max=10;
var interval=null;
function a(){num++;if(num==max){clearInterval(interval);alert("done")}};
interval=setInterval(a,1000);


很少真正使用间歇调用,原因是后一个间歇调用可能会在前一个间歇调用结束之前启动,一般都使用超时调用模拟间歇调用

var num=0;

var max=10;

function z(){

num++;

if(num<max){

setTimeout(a,500)

}else{

alert("done");

}

}

setTimeout(z,500);



系统对话框

alert() 、confirm()、prompt()

confirm()对话框包括OK和cancel

if(confirm("Are you sure?")){

alert("yes");

}else{

alert("no");

}

yue文本框

var result=prompt("What's your name?","yue")

if(result!==null){

alert("welcome"+result);

}

//显示打印对话框

window.print();

//显示查找对话框

window.find();


location对象

hash  "#content" 返回URL中的hash(#号后跟0或多个字符)

host  “www.wrox.com.80”  返回服务器名称和端口号 

hostname  "www.wrox.com"  返回服务器名称

href   "http://www.wrox.com"  饭hi当前加载页面的完整url

pathname  "/opj/"   返回url中的目录、文件名

port  “8080”  返回url中指定的端口号,如果url不包含端口号,则这个属性返回空字符串

protocol  "http"   返回页面使用的协议。通常是http:或https

search  "?q=javascript"   返回URL的查询字符串。这个字符串以问号开头


每个查询字符串参数都成了返回对象的属性

< script>
function a(){
var str =location.search.length ?location.search. substring( 1) :[];
var arg ={};
var items =str.length ?str. split( "&") :[];
for(i = 0;i <items.length;i ++){
var item =items[i].length ?items[i]. split( "=") :[];
var name = decodeURIComponent(item[ 0]);
var value = decodeURIComponent(item[ 1]);
arg[ "name"] =value;


}
return arg;


}

</ script>
?q=dsd&b=30

alert(arg["q"])  //dsd

alert(arg["b"])  //30

除hash外,每次修改location的属性,页面都会以新url重新加载,且生成一条历史记录

将URL   http://www.wrox.com/wileyCDA  修改为 http://www.wrox.com/wileyCDA/#section1

location.hash="#section1";

将URL   http://www.wrox.com/wileyCDA  修改为 http://www.wrox.com/wileyCDA/?q=section1

location.search="?q=section1";

将URL   http://www.wrox.com/wileyCDA  修改为 http://www.yahoo.com/wileyCDA

location.hostname=http://www.yahoo.com/

将URL   http://www.wrox.com/wileyCDA  修改为 http://www.yahoo.com:8080/wileyCDA

location.port=8080;


导致浏览器位置改变,但不会生成历史记录,在调用replace()后,用户不能回到前一个页面。

< body >
< p >dwedw </ p >
</ body >
< script type= "text/javascript" >
setTimeout( function(){
location. search= "http://www.wrox.com";
}, 1000);
< / script >


reload()重新加载当前显示的页面 ,调用之后的代码可能会也可能不会执行代码,这取决于网络延迟或系统资源,所以,最好将reload()放在最后一行

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

检测插件

plugins();

< script type= "text/javascript" >
function chajian( name){
name= name. toLowerCase();
for( i= 0; i< navigator. plugins. length; i++){
if( navigator. plugins[ i]. name. toLowerCase. indexOf( name)>- 1){
return true;
}}

return false;

}
< / script >

检测IE中的插件ActiveXobject(),IE是使用COM对象实现插件的,而COM对象使用唯一标识符来标识,因此,想要检查特定插件,就必须知道其COM标识符

function chajianIE(name){

try{

new ActiveXobject(name);

return true;

}catch (ex){

return false;

}

}


检测flash

alert(chajianIE("ShockwaveFlash.ShockwaveFlash"));

检测QuickTime

alert(chajianIE("QuickTime.QuickTime"));


典型的做法是针对每个插件分别创建检测函数,而不是使用上面介绍的通用检测方法。


检测所有浏览器中的Flash

function hasFlash(){

var result=chajian("Flsah" );

if(!result){

result=chajianIE("ShockwaveFlash.ShockwaveFlash");

}

return result;

}

alert(hasFLash());

检测所有浏览器中的QuickTime

function hasQuickTime(){

var result=chajian("QuickTime" );

if(!result){

result=chajianIE("QuickTime.QuickTime");

}

return result;

}

alert(hasQuickTime());





资源下载链接为: https://pan.quark.cn/s/3d8e22c21839 随着 Web UI 框架(如 EasyUI、JqueryUI、Ext、DWZ 等)的不断发展与成熟,系统界面的统一化设计逐渐成为可能,同时代码生成器也能够生成符合统一规范的界面。在这种背景下,“代码生成 + 手工合并”的半智能开发模式正逐渐成为新的开发趋势。通过代码生成器,单表数据模型以及一对多数据模型的增删改查功能可以被直接生成并投入使用,这能够有效节省大约 80% 的开发工作量,从而显著提升开发效率。 JEECG(J2EE Code Generation)是一款基于代码生成器的智能开发平台。它引领了一种全新的开发模式,即从在线编码(Online Coding)到代码生成器生成代码,再到手工合并(Merge)的智能开发流程。该平台能够帮助开发者解决 Java 项目中大约 90% 的重复性工作,让开发者可以将更多的精力集中在业务逻辑的实现上。它不仅能够快速提高开发效率,帮助公司节省大量的人力成本,同时也保持了开发的灵活性。 JEECG 的核心宗旨是:对于简单的功能,可以通过在线编码配置来实现;对于复杂的功能,则利用代码生成器生成代码后,再进行手工合并;对于复杂的流程业务,采用表单自定义的方式进行处理,而业务流程则通过工作流来实现,并且可以扩展出任务接口,供开发者编写具体的业务逻辑。通过这种方式,JEECG 实现了流程任务节点和任务接口的灵活配置,既保证了开发的高效性,又兼顾了项目的灵活性和可扩展性。
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、付费专栏及课程。

余额充值