Category Archives: javascript

用javascript过滤html里的javascript代码

今天同事要打印她页面里某个div里的内容,按常理应该用css里的media="print"来实现,但是她那里的环境不允许。那个div里有很多javascirpt代码,当弹出一个窗口插入div里的innerHTML的时候,会报很多js错,没办法,只能先从div里拿出html内容,用正则表达式过滤js。代码如下: var text = document.getElementById( “test” ).innerHTML; text = text.replace( /<script.*?>(.|\s|\r|\r\n)*?<\/script>/gim, “” ); 然后附上示例的html代码: 点击下载

在firefox下忽略whitespace节点遍历dom

IE和FF的whitespace节点处理是不一样的,IE会忽略dom中的whitespace,而ff不会,所以以下代码在IE和FF下执行效果是不一样的: <div id=”container”> <div id=”main”> <div id=”sub1″> hello sub 1. </div> <div id=”sub2″> hello sub 2. </div> </div> </div> <script type=”text/javascript”> function test(){ alert( $(‘container’).firstChild.firstChild.nextSibling.id ); } test(); </script> 为了使两个浏览器运行效果一致,则需要把所有dom中的whitespace节点去掉,可以这样写: /* * *remove whitespace for the dom, so that document.documentElement.firstChild.nextSibling.firstChild can work. * */ _rdc.cleanWhitespace = function( element ) { // If no element is… Read More »

将某个函数放在window.onload事件中最先执行

如果在window onload事件中,想让某个函数最先执行,该怎么办呢?方法如下: function addLoadEvent(func) { var oldonload = window.onload; if (typeof window.onload != ‘function’) { window.onload = func; } else { window.onload = function() { oldonload(); func(); } } }

用javascript得到文件大小

一小段在客户端得到文件大小脚本,可以在upload之前检查文件大小是否超过限制。 代码如下: function getFileSize(filePath) { var image=new Image(); image.dynsrc=filePath; alert(image.fileSize); } 测试代码: <INPUT TYPE=”file” NAME=”file” SIZE=”30″ onchange=”getFileSize(this.value)”>

javascript在货币中加逗号

在做一个智利的项目的时候,有个算buget的页面,需要显示货币时数字之间每3位用逗号分隔,而且计算都是在客户端进行,所以就用javascript实现。 代码如下,包含了加逗号和移除逗号 function addCommas(nStr) { nStr += ”; x = nStr.split(‘.’); x1 = x[0]; x2 = x.length > 1 ? ‘.’ + x[1] : ”; var rgx = /(\d+)(\d{3})/; while (rgx.test(x1)) { x1 = x1.replace(rgx, ‘$1’ + ‘,’ + ‘$2’); } return x1 + x2; } function remCommas(nStr) { return nStr.replace(/\./g , ”).replace(‘%’,”).replace(‘ ‘,”).replace(‘,’,’.’); }

用javascript将中文字符转换成拼音

思路还是比较简单的,就是——穷举法,将中文字符作为参数,去"数据库"匹配,这里的数据库其实就是几个数组。 使用方法: 首先加载pytran.js <script type=”text/javascript” src=”pytran.js”></script> 然后写一个函数调用pinyin库里的函数来完成字符的转换,例如: function Translate() { var txtNameSpell = document.getElementById(“txtNameSpell”); var txtHanZi = document.getElementById(“txtDisplayName”); var txtPinYin = document.getElementById(“txtPinYin”); var srccode = txtHanZi.value; txtPinYin.value = TranslateToDiv(srccode, txtPinYin); }   在要使用转换的地方调用Translate(),例如,在某个textbox onblur的时候: <input type=”text” id=”txtDisplayName” onblur=”Translate();” /> 这样就可以在txtDisplayName onblur事件触发的时候,在txtPinYin里显示相应的拼音了 代码下载: 点击这里下载源代码和示例

ajax取得被访问页面中的一部分

纯粹地用xmlhttprequest访问某个页面的时候,比如某个aspx页面,返回的是整个页面的html,但有时候我们只需要其中的一部分,或者第一次调用需要页面中的某个部分,第二次调用需要页面中的另外一个部分。 可以这样解决: 在被访问页面里写上某些注释,客户端callback的时候截取注释里的内容: 部分js代码: function processData(responseText, responseStatus) { if (responseStatus==200) { alert(responseText); var str = responseText.match(/<!–ajaxcontentbegin–>(.|”s|”r|”r”n)*?<!–ajaxcontentend–>/gim); alert(str); document.getElementById(“container”).innerHTML = str; document.getElementById(“localInput”).value = document.getElementById(“someInput”).value } else { alert(responseStatus ); } } var myRequest = new ajaxObject(‘target.htm’, processData);

ASP.Net按钮提交前执行javascript

here is the code… 在提交前执行一段js <script language=“javascript“> function doSomething() { // 执行自己的javascript // 继续提交 this.click();} </script> <asp:button onmousedown=“doSomething()“ id=“someButton” Text=”提交” runat=”server”> </asp:button>

用JavaScript执行PostBack

早上实现了在子页面更新数据以后,父页面刷新树的功能 思路: 父页面有个隐藏的html button作为proxy,子页面保存完数据以后,用js调用父页面的html button的触发函数click(); 父页面有个asp.net的link button控件,text="",等于也是隐藏的,它负责调用后台cs代码里的负责刷新树的方法; 父页面的html button onclick的时候,__doPostBack(‘DoRefresh’,”); 代码: 父页面apsx: <input type=”button” id=”DoRefreshProxy” value=”DO” onclick=”__doPostBack(‘DoRefresh’,”);” style=”display:none;” /> <asp:linkbutton id=”DoRefresh” runat=”server” onclick=”DoRefresh_Click” CausesValidation=False/> 父页面cs: protected void DoRefresh_Click(object sender, EventArgs e) { this.BindTree(this.tvBuilding.SelectedNodeIndex,1); } 子页面cs: Page.RegisterStartupScript(“pb”,”<script> window.opener.document.getElementById( ‘DoRefreshProxy’ ).click();</script>”);

href=”#” vs. href=”javascript:void(0)”

开发的时候有时需要用link(<a>)来触发一些javascript事件,所以常常可以看到如下的代码: <a href="javascript:void(0)" xxxxx="doSomething();return false;">Link</a> 其实,一下写法更合理: <a href="#" xxxxx="doSomething();return false;">Link</a> 或者: <script type="javascript"> function doSomething() { //doSomething return false; } </script> <a href="#" xxxxx="return doSomething();">Link</a> 再或者: <a href=”http://google.com/” xxxxx=”window.open(this.href, ‘popupwindow’, width=400,height=300,scrollbars,resizable’); return false;”> 这样的好处就是可以保存到书签或者收藏夹,可以左键单击,也可以右键使用!