2012年7月12日 星期四

執行字串內javascript指令

今天工作上遇到,以下做個分享
問題:
A視窗傳FunName給B視窗,然後B視窗去執行A視窗FunName的Function

A.aspx
window.open(B.aspx?FunName=Test);

B.aspx
opener.[FunName]();

各位發現問題了嗎?
B視窗要怎麼將字串內的文字當成指令/Function執行呢?

解法1:
使用setTimeout去執行(setTimeout用法請自行查)
setTimeout("opener." + FunName+ "();",10);
.
.
.


這樣就可以去執行A視窗的Function
但問題來了
如果接下來動作是在A視窗的Function執行完成後才能繼續做
但因為
setTimeout是非同步執行
那最後資料就會不正確
更可能直接Error給你看
這時候該怎麼辦呢?

解法2:
先將完整指令存成字串,再用Eval()去執行
var strFun = "opener." + FunName+ "();";
Eval(strFun);
.
.
.


這樣就會執行完A的Function再執行下面動作

對此問題而言
以上2種方法都可以達到執行字串內javascript指令的動作
差別在於
setTimeout 同時並行、節省執行時間
Eval 執行延續、錯誤排除方便

以上提供給大家參考

回aspnet目錄
回首頁

沒有留言 :

張貼留言

Related Posts Plugin for WordPress, Blogger...