- 浏览: 366247 次
- 性别:
- 来自: xian
文章分类
最新评论
-
wangcl011:
感谢分享,这是我参照写的在线实例:http://www.itd ...
ExtJs的ComboBox级联实现 -
dayone:
影非弦 写道我用LZ的方法,总是提示找不到文件,请确定路径和文 ...
JavaScript调用本地的exe程序 -
影非弦:
我用LZ的方法,总是提示找不到文件,请确定路径和文件名是否正确 ...
JavaScript调用本地的exe程序 -
yuanfen:
多谢楼主的分享
JSF教程电子书 -
jersey109:
spring事务管理底层也是JTA,而JTA是所有应用服务器的 ...
Spring声明式事务管理,通过Spring AOP实现
获取当前毫秒数(0-999)
var myDate = new Date();
var mil = myDate.getMilliseconds(); //获取当前毫秒数(0-999)
刷新iframe中src所指向的页面:
iframe:<iframe id="iframeChart" name="iframeChart" src="chart.jsp"></iframe>
方 法:document.getElementById("iframeChart").src="chart.jsp"; //也就是重新给src赋值
也有下面这样的,但是我使用的时候报错,说是不支持此方法:
<iframe name="E" src="ppp.htm"> </iframe>
<a onclick="E.location.reload()">aaa </a>
【获取当前路径】
a=self.location.toString();
var b="";
for(i=0;i<a.split("/").length-2 ;i++)
{
b=b+a.split("/")[i].toString()+"/";
}
</script>
【div】
1、带边框的div(单击关闭)
<div onclick="divnone()" id="img_win" style="display:none;position:absolute;left:200px;top:30px;width:400px;border:5px solid #F9BB00;"></div>
1、带边框的div(双击关闭)
<div ondblclick="divnone()" id="img_win" style="display:none;position:absolute;left:200px;top:30px;width:400px;border:5px solid #8DB2E3"></div>
2、div加图片显示,以及脚本控制
//--显示缩略图的预览,需要sgt.html页面的div
function shouMe(value)
{
//alert(value);
var divId=document.getElementById('img_win');
divId.style.display = "block";
divId.innerHTML="<image id='custom' src='http://localhost:8080/jsytExt/ExcelUpLoadTemp/"+value+"' width='100%'>";
divId.style.left=(document.body.clientWidth-divId.clientWidth)/2+document.body.scrollLeft;
divId.style.top=(document.body.clientHeight-divId.clientHeight)/2+document.body.scrollTop;
}
//--单击div时关闭此div
function divnone()
{
var divId=document.getElementById('img_win');
divId.style.display = "none";
}
3、注意js函数传参
<a href='#' onclick=shouMe(\'"+value+"\')><image id='custom' src='http://localhost:8080/jsytExt/ExcelUpLoadTemp/"+value+"' width='70'></a>
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
17:08 2008-10-9【只能是数字】
《方法一》:这个方式的效果就是直接文本框输入不成非数字的字符,如果输入的话直接就删除了
<input onkeyup="value=value.replace(/[^\d]/g,'') "onbeforepaste="clipboardData.setData('text',clipboardData.getData('text').replace(/[^\d]/g,''))">
------------------------------------------------------------------------
《方法二》
isNaN(object.value)==true //等于true表明输入的不是数字
------------------------------------------------------------------------
方法说明:
返回一个 Boolean 值,指明提供的值是否是保留值 NaN (不是数字)。
isNaN(numValue)
必选项 numvalue 参数为要检查是否为 NAN 的值。
说明
如果值是 NaN, 那么 isNaN 函数返回 true ,否则返回 false 。 使用这个函数的典型情况是检查 parseInt 和 parseFloat 方法的返回值。
还有一种办法,变量可以与它自身进行比较。 如果比较的结果不等,那么它就是 NaN 。 这是因为 NaN 是唯一与自身不等的值。
**************2008-04-22******************************************
******************************************************************
-------------彻底屏蔽鼠标右键,无右键菜单2008-4-22『开始』--------------
》》》》网页无法被另存为mht何html都不行《《《《《
<noscript>
<iframe src=*.html></iframe>
</noscript>
<script language=javascript>
<!--
if(window.Event)
{
document.captureEvents(Event.MOUSEUP);
}
function nocontextmenu()
{
event.cancelBubble = true
event.returnValue = false;
return false;
}
function norightclick(e)
{
if (window.Event)
{
if (e.which == 2 || e.which == 3)
return false;
}
else if (event.button == 2 || event.button == 3)
{
event.cancelBubble = true
event.returnValue = false;
return false;
}
}
document.oncontextmenu = nocontextmenu; // for IE5+
document.onmousedown = norightclick; // for all others
//-->
</script>
---------------彻底屏蔽鼠标右键,无右键菜单『完』-------------
1.将彻底屏蔽鼠标右键,无右键菜单(好像没有用)
<body oncontextmenu="window.event.returnvalue=false">
也可以用于网页中Table框架中
<table border oncontextmenu=return(false)><td>no</table>
2.取消选取、防止复制
<body onselectstart="return false">
3.不准粘贴
<body onpaste="return false">
4.防止复制
<body oncopy="return false;" oncut="return false;">
5.IE地址栏前换成自己的图标
<link rel="Shortcut Icon" href="favicon.ico">
*******************************************************************
>>>>>获取当前时间,并且判断闰年
var ye = new Date().getFullYear();
var mo = new Date().getMonth()+ 1;
var rn =(0==ye%4&&((ye%100!=0)||(ye%400==0))); //判断闰年
判断使用 if (rn==true){........}
......................................................................................
--------------------------------------------------------------------------------------
if(startdate) //这里时处理,业务要求为“开始日期格式为当前日期的当前年,当前月,当前天减去3”
{
//-----start--------------------------------------------
if(day-3 >= 1)//------如果当前天数可以正常减去3天,就只作减3处理
{
day = day-3;
}
else if(day-3 < 1) //当,当前约减去3小于1得时候,表明当前日期为“yyyy-mm-1/2/3”,所以要做如下处理;
{
if(mo-1 >= 1) //首先判断当前月份减去一是否为0或负数,如果不为零也不为负数,那么当前月减去1;
{
mo = mo - 1; //当前月减去1,接下来要对处理完的月份的日做处理,以保证查询条件中的开始日期与结束日期相差3天;
if(mo==2) //当处理过后的月份为2月时,就要判断是否为闰年,再对日进行处理;
{
if(rn==true)//为闰年时
{
if(day == 1){
day = 27;
dayb = false;
}
if(day == 2){
day = 28;
dayb = false;
}
if(day == 3){
day = 29;
dayb = false;
}
}
else //不为闰年时
{
if(day == 1){
day = 26;
}
if(day == 2){
day = 27;
}
if(day == 3){
day = 28;
}
dayb = false;
}
}
else if(mo==1 || mo==3 || mo==5 || mo==7 || mo==8 || mo==10 || mo==12) //如果为大月1-31
{
if(day == 1) //在判断当前天为几,范围为“1,2,3”
{
day = 29;
}
if(day == 2)
{
day = 30;
}
if(day == 3)
{
day = 31;
}
dayb = false;
}
else if(mo==4 || mo==6 || mo==9 || mo==11) // 如果为小月1-30
{
if(day == 1) //在判断当前天为几,范围为“1,2,3”
{
day = 28;
}
if(day == 2)
{
day = 39;
}
if(day == 3)
{
day = 30;
}
dayb = false; //天之前不补零
}
}
else //当前月减去1小于0的时候,表明当前日期可能为“yyyy-01-dd”,如2008-01-01
{
ye = ye - 1; //年份减去1,变成2007-mm-dd
mo = 12; //大月份,变成2007-12-dd
if(day == 1) //在判断当前天为几,范围为“1,2,3”
{
day = 29;
dayb = false;
}
if(day == 2)
{
day = 30;
dayb = false;
}
if(day == 3)
{
day = 31;
dayb = false;
}
}
}
//---------end---------
if(mo>9){
mob =false; //处理月份前补零的问题,大于九月份数字前就不需要补零了;
}
//组合为日期
endvalue = ye+"-"+(mob?"0":"")+mo+"-"+(dayb?"0":"")+day; //开始日期
}
--------------------------------------------------------------------------------------
**************************************************************************************
-------------------------------------------------------------------------------------
1、*********************点击浏览器右上角的叉叉关闭的提示信息*************************
<script language="javascript">
//在点右上角X的时候弹出提示,让用户确认(是否关闭)
//这个市现在发现的最佳方案(解决了onbeforeunload()函数在刷新页面也弹出的问题)
//而且无需再body中加载
function window.onbeforeunload()
{
if(event.clientX>360&&event.clientY<0>
{
window.event.returnValue="(提示:)要退出系统请点系统的安全退出!";
}
}
</script>
2、********************提示“是否删除”********************
<SCRIPT LANGUAGE=javascript>
<!--
function delRecord()
{
if (!confirm("确定要删除当前所选择的归档记录吗?")) return false;
document.frmRecord.action="delRecord.jsp";
document.frmRecord.submit();
}
function docBack()
{
//本目录归档
document.location="SendFile.jsp";
}
function page(n)
{
if(n==1)
{
if(<%=curPage%>==1)
{
alert('已达第一页!');
}
else
{
document.frmRecord.action="DocManageList.jsp?page="+<%=curPage-1%>+"&typeId="+<%=typeId%>+"";
document.frmRecord.submit();
}
}
else
{
if(<%=curPage%>==<%=pageCount%>)
{
alert('已达最后一页!');
}
else
{
document.frmRecord.action="DocManageList.jsp?page="+<%=curPage+1%>+"&typeId="+<%=typeId%>+"";
document.frmRecord.submit();
}
}
//alert("pre!");
}
//-->
</SCRIPT>
3、************************脚本中写跳转链接************************************
--------------document.location="do.html";-----------------
<script>
function lo()
{
document.location="2.html";
}
</script>
<a href="javascript:lo()">goooooo</a>
4、********************在js中让链接跳转到指定的框架****************************JS中写跳转链接指定框架
location.href=""right.asp" target="_self"" ///在js中让链接跳转到指定的框架
用location.href传值时可不可以象超连那样可以选择目标窗台用“target="_self"”
<a href="left.asp" target="_self">
location.href=""right.asp" target="_self""
窗口名.location.href=""
你也可以用window.open(url,"窗口名")
可以这样子
<script>
function GO(){
var a = document.createElement("A");
a.href = "test.htm";
a.target = "_blank";
document.body.appendChild(a);
a.click();
}
</script>
<input type="button" value = "GO" onclick="GO();" />
5、**********************************************************************************
---------------------验证是否为数字(可以将焦点放在出错的地方)-----------------
if(isNaN(parseFloat(document.all("PHONE").value)))
{
alert("请输入数字!");
document.all("PHONE").focus();
document.all("PHONE").select();
return false;
}else
{
document.all("PHONE").value=parseFloat(document.all("PHONE").value)
}
}
6、******************************设置标题****************
<SCRIPT LANGUAGE="JavaScript">
<!--
WriteTableHead2("客户档案明细");
//-->
</SCRIPT>
7、**********************动态action,删除提示,隐藏显示表格************
function cForm()
{
document.all.ClientAddForm.action="ClientLinkManAdd.jsp";
document.all("ClientAddForm").submit();
}
function isDel(linkNum)
{
if (confirm("确定要删除选择的信息吗?"))
{
document.location="DeleteLinkMan.jsp?linkNum="+linkNum+"&clientNum='"+<%=ClientNO%>+"'&delFlag=1";
}
else
{
return;
}
}
8、//**************************//显示隐藏联系人列表 *****************************
function isBlock()
{
var linkManList=document.all("linkManTable");
if(linkManList.style.display == "none")
{
linkManList.style.display = "block";
//return;
}
else if(linkManList.style.display == "block")
{
linkManList.style.display = "none";
}
}
9、//*********单选框的判断**********
//定时选择框-------------对checkbox“单选框”的操作
function isDs()
{
var dingshi=document.all("dingshi");
var ddss = document.all("ddss");
var jjss = document.all("jjss");
if(dingshi.style.display == "none" && ddss.checked)
{
dingshi.style.display = "block";
jjss.checked = false;
}
else if(dingshi.style.display == "block" && jjss.checked)
{
dingshi.style.display = "none";
ddss.checked = false;
}
}
10、//***********************************************
定时与即时的脚本判断,当定时的时候才调用脚本验证:
var setTime = document.all.txtRegDate.value; //定时的选择脚本框
var ddss = document.all("ddss"); //定时单选按钮
if(ddss.checked && setTime == "")
{
alert("请设定定时发送的日期!");
document.all.txtRegDate.focus();
document.all.txtRegDate.select();
return false;
}
11、//***********************************************
用图片按钮实现表单的初始化,功能与“重填”按钮一样。
<img src="../IMAGES/new_chongtian.jpg" width="85" height="26" style="cursor:hand" onClick="form1.reset()" onMouseOver="ChgImg('../IMAGES/new_chongtian1.jpg')" onMouseOut="ChgImg('../IMAGES/new_chongtian.jpg')" value="重填"></p>
12、//************************************************
//实现打印的脚本
function Tprint()
{
document.all("Tprint").style.display="none";
window.print();
}
-----------------------输出为excel,需要一个jsp页面----------
function outexcel()
{
open_win("excel.jsp?yyyy=<%=stryyyy%>&mm=<%=strmm%>");
}
13、*************************************************
///当鼠标点击下一个的时候脚本提示,需要ChkTxt函数
onBlur="return ChkTxt('PRINCIPAL',25,'单位法人太长!')"
14、****************openwin*********************************
function openwin(url)
{
document.open(url,"_blank","left=0,top=0,height=window.screen.height,width=window.screen.width,location=no,menubar=no,titlebar=no,toolbar =no");
}
-----连接调用上面的open脚本
<a onClick="openwin('help/help.jsp')" title="帮助"><img src="IMAGES/newbangzhu.gif" onMouseOver="ChgImg('IMAGES/newbangzhu1.gif')" onMouseOut="ChgImg('IMAGES/newbangzhu.gif')" width="24" height="23" border="0" style="cursor:hand" title="帮助"></a>
15、//*********************select选项的on动作************************************
<select name="mymonth" size=1 onChange="form1.submit()">
16、//********************使用JavaSctipt获取屏幕分辨率的方法*********************
(1) 客户端的话用JAVASCRIPT就可以了。
screen.widht 水平方向
screen.height 垂直方向
(3) 楼GJA106(中文字符)回复于 2005-01-31 11:45:46 得分 10通过javascript是取得。代码如下:
var iWidth = window.screen.availWidth;
var iHeight = window.screen.availHeight;
(4) 楼GJA106(中文字符)回复于 2005-01-31 11:46:54 得分 0 返回值是:800*600、1024*768之类的值
-----------------具体实际使用----------------
通过一个过渡页面,用JS得到屏幕的高和宽,再把得到的值通过
document.url = URL + "?width=宽&height=高";
直接传到你的真正页面中就可以了。
例:
<%
String kuan = request.getParameter("width")==null?"":request.getParameter("width"); //获取提交的值
String gao = request.getParameter("height")==null?"":request.getParameter("height");
if("".equals(kuan) && "".equals(gao))
{
%>
<script language="JavaScript">
<!--
//function onload()
//{
var iWidth = window.screen.width; //获取宽度
var iHeight = window.screen.height; //获取高度
//alert("width:"+iWidth+"height:"+iHeight);
//document.url = Top.jsp+"?width="+iWidth+"&height="+iHeight";
window.location.href = "Top.jsp?width="+iWidth+"&height="+iHeight; //提交一下
//}
//-->
</script>
<%
}
System.out.println("宽:"+kuan+" 高:"+gao); //输出测试
%>
17、***************************JavaScript时间******************************************
在JavaScript中new Date()得到的就是客户端时间。
----------------------------------------------------
18、//************点击超链接,同时链接到两个文件在两个不同的FRAME中打开****************
请问如何在框架网页中,点击超链接,同时链接到两个文件在两个不同的FRAME中打开
也就是这样的,
我在TOPFRAME中设置一个超链接
在选择之后
LEFTFRAME打开一个网页
MAINFRAME也同时打开一个网页
请指教,谢谢
----------回帖
是parent.框架名.location="xxxx.htm";
<button onclick='parent.left.location="left.html";parent.main.location="main.html";'>
click</button>
----------具体实际应用
<a href="#" style='cursor:hand' onclick='parent.main.location="Email/MailReceive.jsp?BarCode=475";parent.left.location="Email/Menu.jsp?BarCode=475";'><img src="IMAGES/top_daohang/e-mail.gif" onMouseOver="ChgImg('IMAGES/top_daohang/e-mail1.gif')" onMouseOut="ChgImg('IMAGES/top_daohang/e-mail.gif')" border="0" style="cursor:hand" title="电子邮件"></a>
**********************************************************************************************************************
19、***********************(top页面应用的定时器脚本)***************************
<!--包含已经封装的消息JS-->
<script type="text/javascript" src="JS/tcms.js"></script>
<SCRIPT language=JavaScript>
/**--------------陈勇 2007-7-24 11:30 修改添加----------*/
function getTss() //获取提示信息和地址
{
var dd;
dd=new Date();
ajax.get("getTs.jsp?ss="+dd,bb); //这里的bb函数是在上面定义的
setTimeout(getTss,3000); //定时器每3秒获取一次
}
getTss();
function showTsMsg() //弹出提示
{
var MSG1 = new CLASS_MSN_MESSAGE("",200,120,"短消息提示:","您有1个新消息",content);
MSG1.rect(null,null,null,screen.height-50);
MSG1.speed = 20;
MSG1.step = 5;
if(content !="" && content != null && cas.length >14)
{
MSG1.show();
}
setTimeout(showTsMsg,30000); //定时器30秒刷新弹出提示一次
}
showTsMsg();
/**--------------完毕--------------*/
</SCRIPT>
------------------------------------------------------------------------------------
20、***********//窗口关闭后,自动刷新父窗口****************
<SCRIPT LANGUAGE="JavaScript">
alert('客户联系人添加成功!');window.close();opener.location.reload();
</SCRIPT>
21、*************脚本的前进、后退、刷新、推出**************************
<a href="vbscript:history.back" >后退</a>
<a href="vbscript:history.forward" >前进</a>
<a href="vbscript:parent.main.location.reload" ></a> //刷新特定框架的页面
-------------------------------------------------------
function exitsystem()
{
if (!confirm("确定要退出当前系统吗?")) return
window.location.href="exit.jsp"
}
////调用上边的脚本
<a href="#" onClick="javaScript:exitsystem()"></a>
-------------------------------------------------------
22、*********************************************************
//标题 在网页中调用本地的应用程序!!!!net_lover(原作)
//关键字 javascript,application
//在网页中调用本地的应用程序
//例子:
<script>
function exec(command)
{
window.oldOnError = window.onerror;
window._command = command;
window.onerror = function (err) {
if(err.indexOf('utomation') != -1)
{
alert('命令' + window._command + '已经被用户禁止!');
return true;
}
else return false;
};
var wsh = new ActiveXObject('WScript.Shell');
if(wsh)
wsh.Run(command);
window.onerror = window.oldOnError;
}
</script>
<input type=button onclick="exec('notepad')" value=执行>
******************************************************************
23、-----弹出窗口选择的值,直接填充到父窗口的文本中,且弹出窗口自动关闭,也可弹出一个提示-----
out.println("<script language='javascript'>alert('上传成功');window.close();opener.FormName.dDir.value='"+ddddd+"';</script>");
24、*******************转义字符***************************
1 \b 后退一格 (Backspace)
2 \f 换页 (Form Feed)
3 \n 换行 (New Line)
4 \r 返回 (Carriage Return)
5 \t 制表 (Tab)
6 \' 单引号
7 \" 双引号
8 \\ 反斜线 (Backslash)
示例如下:
--------------------------------------
<Script Language = "JAVAScript">
<!--
//用(\")表示(")
document.write("我们的\"爱人\"");
document.write("<hr>");
//用(\\)表示(\)
document.write("文件在C:\\Windows\\下");
document.write("<hr>");
//用(\n)表示换行
alert("是MM就\n亲一下");
document.write("<hr>");
//用(\n)表示换行
document.write("<pre>是MM就\n亲一下</pre>");
document.write("<hr>");
-->
</Script>
*********************
25、***********************************************
//java中的转义字符,将C:\Documents and Settings\Administrator\My Documents中的 "\" 转换成可识别的 "\"
ddddd.replace("\\\\","\\\\\\\\");
***************************************************
26、------------//键盘事件//-------------------------
在很多网页中,可以使用快捷来完成一定的动作,比如discuz论坛的“完成后可按 Ctrl+Enter 发布”功能!
这样的功能是用JavaScript中的event属性的KeyCode方法完成,利用onKeyDown事件进行驱动。
在JavaScript中,可以通过keyCode属性来得到用户所按键的ASSCII码值。具体对应关系可以查ASSCII码表。
例子:
CODE: [Copy to clipboard]
--------------------------------------------------------------------------------
<SCRIPT LANGUAGE="JavaScript">
<!--
function hotkey()
{
var a=window.event.keyCode;
if(a==65)
{
alert("你按了a键吧");
}
}// end hotkey
document.onkeydown = hotkey; //当onkeydown 事件发生时调用hotkey函数
//-->
</SCRIPT>
另外,在快捷键的使用中,Alt、Ctrl、shift等辅助键也是经常用到的,可以通过altKey、ctrlKey、shiftKey
这三个属性来判断Alt、Ctrl、shift键的状态;比如event.ctrlKey的值为真,就说明用户按下了Ctrl键。
例子:
CODE: [Copy to clipboard]
--------------------------------------------------------------------------------
<SCRIPT LANGUAGE="JavaScript">
<!--
function hotkey()
{
if(event.ctrlKey)
{
alert("你按了Ctrl键吧");
}
}// end hotkey
document.onkeydown = hotkey; //当onkeydown 事件发生时调用hotkey函数
//-->
</SCRIPT>
可以组合起来,形成真正的快捷键,将执行语句换为你要的效果就可以了。
CODE: [Copy to clipboard]
--------------------------------------------------------------------------------
<SCRIPT LANGUAGE="JavaScript">
<!--
function hotkey()
{
var a=window.event.keyCode;
if((a==65)&&(event.ctrlKey))
{
alert("你按了ctrl+a键吧");
}
}// end hotkey
document.onkeydown = hotkey; //当onkeydown 事件发生时调用hotkey函数
//-->
</SCRIPT>
document.onkeydown = hotkey 语句是在全页面中,当用户按下键时,调用hotkey函数,
也许你希望在页面局部实现快捷键功能,那么,你可以仿照下面这样做(记得删除"document.onkeydown = hotkey"语句):
CODE: [Copy to clipboard]
--------------------------------------------------------------------------------
<textarea rows="7" cols="90" name="message" onKeyDown="javascript: hotkey();" tabindex="2"></textarea>
这样,只有当光标焦点在文本框中才能使用快捷键。
**************************************************************************
-------------当鼠标移到该行,该行的颜色变成其他颜色----------------------
<tr align="center" onMouseOver="style.background='#DEEFFC'" onMouseOut="style.background='#ffffff'">
******************************************
--------自动返回上一页--------------------
<script type="text/javascript">
alert("设备录入成功!!!!!");
history.back();
</script>
******************************************
弹出询问????
var ask = window.confirm("导出Excel表格?");
if(ask)
{
window.document.location = "../../outexcel.jsp?btype="+top.btype+"&stype="+top.stype;
}
else
{
return false;
}
相关推荐
本书是一本全面、深入介绍JavaScript语言的学习指南。本书共分四个部分,第1部分帮助读者快速入手,掌握基本的JavaScript编程要点;第2部分介绍JavaScript的发展和技术背景;第3部分深入探索JavaScript,介绍了语法...
《Head First JavaScript源码》是2010年出版的一本中文版JavaScript学习书籍的源码,这本书以其独特的视觉设计和易理解的方式深入浅出地介绍了JavaScript编程语言。JavaScript是一种广泛应用于网页和网络应用的脚本...
《JavaScript权威指南》是JavaScript编程领域的一本经典之作,由著名技术作家David Flanagan撰写,被誉为"JavaScript犀牛书"。这本书深入浅出地讲解了JavaScript语言的核心概念、语法特性和高级特性,对于想要全面...
Author David Herman, with his years of experience on Ecma’s JavaScript standardization committee, illuminates the language’s inner workings as never before—helping you take full advantage of ...
在这个场景中,我们关注的是VS2015的安装过程中涉及到的证书问题以及两个特定的组件:JavaScript_ProjectSystem.msi和JavaScript_LanguageService.msi。 首先,关于“VS2015安装证书”,这通常是指安装过程中需要...
JavaScript,一种广泛应用于Web开发的脚本语言,是前端开发的核心技术之一。这份"JavaScript学习指南"高清PDF,无疑为想要深入理解JavaScript的初学者或有一定基础的开发者提供了宝贵的资源。下面,我们将深入探讨...