水滴石穿之IFRANME加载完成判断、获取函数的动态参数信息
生活随笔
收集整理的這篇文章主要介紹了
水滴石穿之IFRANME加载完成判断、获取函数的动态参数信息
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.判斷IFRAME是否加載完成
由于頁面過程中,需要對IFRAME中的頁面進行控制!但是由于IFRAME頁面是其他人完成的,只是知道它的一些變量!頁面結構如下:
<mw:SplitterPanel?ID="detailSplitterPanel"?runat="server">
????????<iframe?id="clxx"?style="margin:5px?5px?5px?5px;height:100%;?width:100%"?frameBorder=0?scrolling="no"?allowTransparency="true"></iframe>?
????</mw:SplitterPanel> 這是如果在父頁面的onload事件中直接document.frames["clxx"].document.getElementById("splitter_splitter").style.display = "none",IE會提示錯誤,這是因為IFRAME還沒有加載完成,這時候直接引用變量肯定是不存在的,所以必須利用readyState和setTimeout()來共同實現這個目標
function?setSplitterVisiblity()
{
????if(window.frames["clxx"].document.readyState=="complete")???
????????document.frames["clxx"].document.getElementById("splitter_splitter").style.display?=?"none";??
????else???
????????setTimeout("setSplitterVisiblity()",1000);??????
}
window.attachEvent("onload",function()
????????????????????????????{???????
????????????????????????????????document.frames["clxx"].location.href=$mappath("~/BlankWebView.aspx?WebView=BDTV1View&MenuID=02E141CC-720D-4986-9FC4-82A17CECE41F");?
????????????????????????????????
????????????????????????????????setSplitterVisiblity();??
????????????????????????????});
2.獲取函數的動態參數信息
在開發過程中,經常需要對函數實行重載,Javascript本身沒有提供這種功能,但是我們可以通過動態判斷函數的個數,實現同一個函數處理不同的問題
比如在表格的加載過程中,填寫前和填寫后是完全同樣的過程,唯一不同的是填寫后的表格加載需要設置innerText值,這時候就可以通過Function的arguments屬性來完成這個工作
function?addBxbj(arr)
{????
????if(addBxbj.arguments.length?==?0)
????{
????????arr?=?new?Array("",0,0,"");
????}
????var?tgt?=?document.getElementById("bxbj_details");
????//名稱
????var?row?=?tgt.insertRow();
????var?cell?=?row.insertCell();
????var?obj?=?createInputText(150);
????obj.value?=?arr[0];
????cell.appendChild(obj);
????obj.focus();????
????//估價
????cell?=?row.insertCell();
????obj?=?createInputText(60);
????obj.value?=?arr[1];
????cell.appendChild(obj);
????//實際價格
????cell?=?row.insertCell();
????obj?=?createInputText(60);
????obj.value?=?arr[2];
????cell.appendChild(obj);
????//刪除
????cell?=?row.insertCell();
????obj?=?document.createElement("label");
????obj.innerText?=?"?增加?";
????cell.appendChild(obj);
????obj.onclick?=?addBxbj;
????obj?=?document.createElement("label");
????obj.innerText?=?"?刪除?";
????obj.onclick?=?delSelectedRow;
????cell.appendChild(obj);
}
{
????var?oRegex?=?new?RegExp(?'[\?&]'?+?paramName?+?'=([^&]+)',?'i'?)?;
????var?oMatch?=?oRegex.exec(?window.location.search?)?;
????if?(?oMatch?&&?oMatch.length?>?1?)
????????return?oMatch[1]?;
????else
????????return?''?;
}
//?對Function原型bind方法申明
Function.prototype.bind??=??function()???
{???
????????var???__method???=???this;???
????????var???arg???=???arguments;???
????????return???function()???
????????????????{???
??????????????????__method.apply(window,???arg);???
????????????????}???
}
由于頁面過程中,需要對IFRAME中的頁面進行控制!但是由于IFRAME頁面是其他人完成的,只是知道它的一些變量!頁面結構如下:
<mw:SplitterPanel?ID="detailSplitterPanel"?runat="server">
????????<iframe?id="clxx"?style="margin:5px?5px?5px?5px;height:100%;?width:100%"?frameBorder=0?scrolling="no"?allowTransparency="true"></iframe>?
????</mw:SplitterPanel> 這是如果在父頁面的onload事件中直接document.frames["clxx"].document.getElementById("splitter_splitter").style.display = "none",IE會提示錯誤,這是因為IFRAME還沒有加載完成,這時候直接引用變量肯定是不存在的,所以必須利用readyState和setTimeout()來共同實現這個目標
function?setSplitterVisiblity()
{
????if(window.frames["clxx"].document.readyState=="complete")???
????????document.frames["clxx"].document.getElementById("splitter_splitter").style.display?=?"none";??
????else???
????????setTimeout("setSplitterVisiblity()",1000);??????
}
window.attachEvent("onload",function()
????????????????????????????{???????
????????????????????????????????document.frames["clxx"].location.href=$mappath("~/BlankWebView.aspx?WebView=BDTV1View&MenuID=02E141CC-720D-4986-9FC4-82A17CECE41F");?
????????????????????????????????
????????????????????????????????setSplitterVisiblity();??
????????????????????????????});
2.獲取函數的動態參數信息
在開發過程中,經常需要對函數實行重載,Javascript本身沒有提供這種功能,但是我們可以通過動態判斷函數的個數,實現同一個函數處理不同的問題
比如在表格的加載過程中,填寫前和填寫后是完全同樣的過程,唯一不同的是填寫后的表格加載需要設置innerText值,這時候就可以通過Function的arguments屬性來完成這個工作
function?addBxbj(arr)
{????
????if(addBxbj.arguments.length?==?0)
????{
????????arr?=?new?Array("",0,0,"");
????}
????var?tgt?=?document.getElementById("bxbj_details");
????//名稱
????var?row?=?tgt.insertRow();
????var?cell?=?row.insertCell();
????var?obj?=?createInputText(150);
????obj.value?=?arr[0];
????cell.appendChild(obj);
????obj.focus();????
????//估價
????cell?=?row.insertCell();
????obj?=?createInputText(60);
????obj.value?=?arr[1];
????cell.appendChild(obj);
????//實際價格
????cell?=?row.insertCell();
????obj?=?createInputText(60);
????obj.value?=?arr[2];
????cell.appendChild(obj);
????//刪除
????cell?=?row.insertCell();
????obj?=?document.createElement("label");
????obj.innerText?=?"?增加?";
????cell.appendChild(obj);
????obj.onclick?=?addBxbj;
????obj?=?document.createElement("label");
????obj.innerText?=?"?刪除?";
????obj.onclick?=?delSelectedRow;
????cell.appendChild(obj);
}
? 3.從URL中獲取參數值
?
function?GetUrlParam(?paramName?){
????var?oRegex?=?new?RegExp(?'[\?&]'?+?paramName?+?'=([^&]+)',?'i'?)?;
????var?oMatch?=?oRegex.exec(?window.location.search?)?;
????if?(?oMatch?&&?oMatch.length?>?1?)
????????return?oMatch[1]?;
????else
????????return?''?;
}
?
4.對事件進行參數綁定
Code//?對Function原型bind方法申明
Function.prototype.bind??=??function()???
{???
????????var???__method???=???this;???
????????var???arg???=???arguments;???
????????return???function()???
????????????????{???
??????????????????__method.apply(window,???arg);???
????????????????}???
}
轉載于:https://www.cnblogs.com/lne818/archive/2007/09/05/882889.html
總結
以上是生活随笔為你收集整理的水滴石穿之IFRANME加载完成判断、获取函数的动态参数信息的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C# 2.0中泛型编程初级入门教程
- 下一篇: 9.18勿让国耻