應用Atlas後,頁面輸出JS指令碼的時機

2021-08-22 05:37:31 字數 934 閱讀 9606

應用atlas後,頁面輸出js指令碼的時機

左直拳我寫了個使用者控制項,裡面包含了一些js指令碼。

在頁面呼叫的時候,預設是隱藏的(visible=」false」),直到使用者觸發了某事件,才將此控制項彈出來(visible=」true」)。

同時頁面上也用了atlas。那個使用者控制項被updatepanel包圍著,這樣子它隱藏或顯示的時候,頁面就不會重新整理了,追求一種行雲流水,波瀾不驚的效果。

可是月亮下去了,毛病出來了。

發覺控制項中的js函式、事件都失效了,比如,點乙個按牛(其οnclick=」getinfo()」),竟然提示指令碼錯誤:找不到物件。

控制項中明明是有該方法的。

據說updatepanel的原理是將整個頁面提交,資料處理完後回傳,然後有選擇性地進行區域性更新。古怪的是,聽說它將頁面中所有的js都放在了一起。這樣有時侯會造成一些問題,比如注釋語句會將別的函式也注釋掉了。

不過我估計不是這個問題。因為乙個控制項如果在伺服器**中定義為visible=false,則在頁面裝載時,其實並沒有輸出。而在頁面執行期間,由ajax來控制回傳重新整理,這時候再讓控制項visible=true,那麼輸出的控制項上的js是沒有註冊的,當然是找不到了,在瀏覽器檢視頁面的原始檔也看不到這些js指令碼的蹤影。比如,如果應用了ajax,又想使用類似「response.write(「alert(『hello world!』);」)」的方法,通常都不可以。如果要用的話,聽說用registerclientscriptblock註冊一下才行,但也有人說不行,我沒有試,姑妄聽之。

猜想到了原因,要解決問題就不難。不將控制項的visible=false,而是在控制項裡,用乙個將控制項顯示內容包圍起來,而js不在範圍內,預設panel.visible=false,這樣就既可輸出了控制項(特別是上面的指令碼),又起到隱藏的作用,真是護髮去頭皮,兩全其美。如果要想控制該控制項的顯隱,很簡單,設定乙個屬性來控制panel.visible就可以了。

問題解決。

應用Atlas後,頁面輸出JS指令碼的時機

應用 atlas 後,頁面輸出 js指令碼的時機 左直拳我寫了個使用者控制項,裡面包含了一些 js指令碼。在頁面呼叫的時候,預設是隱藏的 visible false 直到使用者觸發了某事件,才將此控制項彈出來 visible true 同時頁面上也用了 atlas 那個使用者控制項被 updatep...

js呼叫其他頁面輸出內容

這樣就可以正常檢視showjs.html輸出 output codebehind版 用vs.net新建showjs.aspx然後把除此句以外的html 全部刪除 page language c codebehind showjs.aspx.cs autoeventwireup false inher...

html頁面格式化輸出js物件

前端開發中,有時需要在 html 頁面格式化輸出 js物件 伺服器響應的json結果等 var todisplayinhtml 將這個物件在html顯示成 可以這樣做 var objstr json.stringify todisplayinhtml,null,4 通過指定json.stringif...