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

2021-04-12 12:12:14 字數 1248 閱讀 3221

應用

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。那個使用者控制項被updatepanel包圍...

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...