最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在服務(wù)端(Page.Write)調(diào)用自定義的JS方法詳解

 更新時(shí)間:2013年08月09日 11:18:13   作者:  
自從[javascript]自定義MessageBox一文發(fā)布以后,很多網(wǎng)友都來(lái)信詢問(wèn),如何在服務(wù)端調(diào)用ShowInfo方法,周末休息想了個(gè)折中的辦法來(lái)實(shí)現(xiàn)
首先,我們應(yīng)該可以先明確,為什么我們用Page.Write把自定義的JS方法輸出到頁(yè)面上為什么IE不能識(shí)別,會(huì)出現(xiàn)“XXX未定義”的錯(cuò)誤。原因很簡(jiǎn)單,因?yàn)槲覀冇肞age.Write輸出的腳本是出現(xiàn)在頁(yè)面的最頂端。IE讀到是javascript函數(shù)的時(shí)候,就開(kāi)始執(zhí)行,但是此時(shí)我們link的js文件并未被IE讀入,所以IE無(wú)法識(shí)別我們定義在js文件里面的方法。那write alert為什么可以呢?因?yàn)閍lert是IE內(nèi)嵌的腳本功能函數(shù),不管有沒(méi)有頁(yè)面,IE都認(rèn)得它。
找到問(wèn)題所在,自然就好解決了:
1、把我們自定義的方法內(nèi)嵌到IE里面。 ---> 看起來(lái)有點(diǎn)異想天開(kāi),呵呵
2、等頁(yè)面載入完成后再觸發(fā)事件。 --->觸發(fā)事件,沒(méi)錯(cuò)。
如何知道頁(yè)面是否載入完成呢?
1、通過(guò)document的狀態(tài)
2、通過(guò)事件觸發(fā)(windows.onload)
第一種好像比較不保險(xiǎn),有時(shí)候明明已經(jīng)全部載完了,它還是一直顯示在傳送數(shù)據(jù)(FF此情況最明顯),所以還是用事件比較保險(xiǎn)一點(diǎn)。
定義一個(gè)簡(jiǎn)單方法,掛載到windows.onload里面,執(zhí)行的時(shí)候做一個(gè)標(biāo)識(shí)
復(fù)制代碼 代碼如下:

var loadComplete = false;
function LoadCompleted()
{
loadComplete= true;
}
window.attachEvent("onload",LoadCompleted);

呵呵,這樣我們只要通過(guò)判斷l(xiāng)oadComplete來(lái)取得頁(yè)面是否載入完畢了。
復(fù)制代碼 代碼如下:

var mImgdir = "";
var mCaption = "caption";
var mMsg = "Message";
var mOkClick= null;
function ShowMessage(imgdir,caption,msg,OkClick)
{
if(loadComplete)
{
KMessageBox.ShowInfo(mImgdir,mCaption,mMsg,mOkClick);
}
}

這樣子在loadComplete未false的情況下,我們就不會(huì)去執(zhí)行KMessageBox.ShowInfo()方法,只然就不會(huì)出現(xiàn)JS錯(cuò)誤提示了。
單單這樣子,還不行,因?yàn)檩敵龅倪@樣的腳本,IE只在輸出頁(yè)面的時(shí)候執(zhí)行了一次,但是此時(shí)loadComplete=false,所以,我們需要定時(shí)檢測(cè)頁(yè)面是否載入完畢。說(shuō)到定時(shí),只然是祭出setTimeout & setInterval. 我們這里需要不停的檢測(cè),故使用setInterval方法。最終代碼如下:
復(fù)制代碼 代碼如下:

var loadComplete = false;
var mImgdir = "";
var mCaption = "caption";
var mMsg = "Message";
var mOkClick= null;
var timerID;
function ShowMessage(imgdir,caption,msg,OkClick)
{
if(loadComplete)
{
KMessageBox.ShowInfo(mImgdir,mCaption,mMsg,mOkClick);
     //卸載此事件     window.detachEvent("onload",function(){LoadCompleted;});     //停止定時(shí)觸發(fā)
     window.clearInterval(timerID);
    }
}
function LoadCompleted() { loadComplete=true; }
window.attachEvent("onload",LoadCompleted);
//設(shè)置定時(shí)檢測(cè)機(jī)制
timerID = window.setInterval(ShowMessage,1);

當(dāng)然以上代碼只兼容IE,因?yàn)槭褂胊ttachEvent 和 detachEvent,至于讓他兼容其他瀏覽器可以參看[JavaScript]自定義Title的顯示方式一文中的處理方式:
復(fù)制代碼 代碼如下:

if(!document.attachEvent)//Not IE
{
document.attachEvent = function(){document.addEventListener(arguments[0].substr(2),arguments[1],arguments[2])}
}
if(!window.attachEvent)//Not IE
{
window.attachEvent = function(){window.addEventListener(arguments[0].substr(2),arguments[1],arguments[2])}
}
 

在服務(wù)端,只要StringBuilder出以上的腳本,然后Write出來(lái)就可以了。上面也只是提供了一種思路,當(dāng)然還會(huì)有其他的辦法,比如我不適用定時(shí)檢測(cè),我直接掛載到windows.onload里面,讓頁(yè)面自動(dòng)監(jiān)聽(tīng),自動(dòng)執(zhí)行,也未嘗不可:),正所謂條條大路通羅馬嘛~~~~~
以上思路來(lái)自yui,并且yui實(shí)現(xiàn)了一個(gè)更漂亮的自定義MessageBox,有興趣的朋友可以共同研究下。

相關(guān)文章

  • 用VsCode編輯TypeScript的實(shí)現(xiàn)方法

    用VsCode編輯TypeScript的實(shí)現(xiàn)方法

    這篇文章主要介紹了用VsCode編輯TypeScript的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • TypeScript使用函數(shù)重載確定返回類型的實(shí)現(xiàn)方法

    TypeScript使用函數(shù)重載確定返回類型的實(shí)現(xiàn)方法

    這篇文章主要介紹了TypeScript使用函數(shù)重載確定返回類型的實(shí)現(xiàn)方法,文中通過(guò)代碼示例講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-03-03
  • JS模仿騰訊圖片站的圖片翻頁(yè)按鈕效果完整實(shí)例

    JS模仿騰訊圖片站的圖片翻頁(yè)按鈕效果完整實(shí)例

    這篇文章主要介紹了JS模仿騰訊圖片站的圖片翻頁(yè)按鈕效果,涉及javascript動(dòng)態(tài)操作頁(yè)面元素屬性的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-06-06
  • 原生Js實(shí)現(xiàn)元素漸隱/漸現(xiàn)(原理為修改元素的css透明度)

    原生Js實(shí)現(xiàn)元素漸隱/漸現(xiàn)(原理為修改元素的css透明度)

    大家經(jīng)??吹骄W(wǎng)頁(yè)里圖片漸變顯示,自己寫一個(gè)。原理很簡(jiǎn)單就是修改元素的css透明度,具體實(shí)現(xiàn)代碼如下,感興趣的各位可以參考下哈,希望對(duì)大家有所幫助
    2013-06-06
  • 微信小程序?qū)崿F(xiàn)點(diǎn)擊生成隨機(jī)驗(yàn)證碼

    微信小程序?qū)崿F(xiàn)點(diǎn)擊生成隨機(jī)驗(yàn)證碼

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)點(diǎn)擊生成隨機(jī)驗(yàn)證碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • layui中使用jquery控制radio選中事件的示例代碼

    layui中使用jquery控制radio選中事件的示例代碼

    今天小編就為大家分享一篇layui中使用jquery控制radio選中事件的示例代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • JavaScript編寫猜拳游戲

    JavaScript編寫猜拳游戲

    這篇文章主要為大家詳細(xì)介紹了JavaScript編寫猜拳游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Javascript 計(jì)算字符串在localStorage中所占字節(jié)數(shù)

    Javascript 計(jì)算字符串在localStorage中所占字節(jié)數(shù)

    本文給大家分享的是使用Javascript 計(jì)算字符串在localStorage中所占字節(jié)數(shù),分別對(duì)UTF-8和UTF-16兩種編碼進(jìn)行了詳細(xì)說(shuō)明,有需要的小伙伴可以參考下。
    2015-10-10
  • JS實(shí)現(xiàn)的在線調(diào)色板實(shí)例(附demo源碼下載)

    JS實(shí)現(xiàn)的在線調(diào)色板實(shí)例(附demo源碼下載)

    這篇文章主要介紹了JS實(shí)現(xiàn)的在線調(diào)色板,可實(shí)現(xiàn)響應(yīng)鼠標(biāo)點(diǎn)擊動(dòng)態(tài)改變調(diào)色板顏色的功能,涉及JavaScript針對(duì)頁(yè)面元素屬性的動(dòng)態(tài)操作與計(jì)算技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下
    2016-03-03
  • 子窗口、父窗口和Silverlight之間的相互調(diào)用

    子窗口、父窗口和Silverlight之間的相互調(diào)用

    前兩天做 silverlight 的東西,主頁(yè)面打開(kāi)一個(gè)子頁(yè)面,然后子頁(yè)面中包含一個(gè) silverlight 應(yīng)用程序那難免會(huì)涉及到他們?nèi)呦嗷フ{(diào)用的問(wèn)題
    2010-08-08

最新評(píng)論

达孜县| 贵港市| 清水县| 隆昌县| 阿坝| 黄浦区| 榆林市| 淮北市| 安仁县| 湟中县| 深州市| 绥滨县| 垦利县| 益阳市| 淮北市| 福州市| 乌拉特后旗| 普安县| 渭南市| 巴彦淖尔市| 盱眙县| 临安市| 龙游县| 图们市| 双鸭山市| 三亚市| 孙吴县| 高雄县| 雷山县| 汉阴县| 罗甸县| 上杭县| 扶风县| 珠海市| 朝阳市| 彭山县| 朝阳区| 罗平县| 牡丹江市| 贺州市| 奇台县|