IW 依賴 js 構建(我數了數, 在當前版本它的資源文件默認攜帶了 26 個 js);
但 IW 盡可能地讓用戶少用或不用 js, 但如果你對 js 也不陌生, IW 提供了多種途徑與方便. 我給它分兩大類:
1、直接寫入 js 代碼(站點級、頁面級, 還可以精確地指定插入位置);
2、鏈接 *.js 文件(外鏈、內鏈, 還可以是資源文件).
procedure TIWForm1.IWAppFormCreate(Sender: TObject); begin AddToInitProc('alert("歡迎")'); //其中的 js 代碼最終會被 window.onload 調用 end;
procedure TIWForm1.IWAppFormCreate(Sender: TObject); begin IWButton1.ScriptEvents.Values['onclick'] := 'alert(this.name)'; //這裡的代碼都應該很簡單, 主要是函數調用 end; {這在設計時更方便:}
//如果不是使用 js 文件, 就應該把 js 函數都寫在 JavaScripts 屬性中 procedure TIWForm1.IWAppFormCreate(Sender: TObject); begin JavaScript.Text := 'function MyFun1() {alert("TIWForm1.JavaScripts");}'; IWButton1.ScriptEvents.Values['onclick'] := 'MyFun1()'; end; {建議在設計時使用 JavaScripts 屬性}
procedure TIWForm1.IWAppFormCreate(Sender: TObject); begin JavaScriptOnce := 'alert("JavaScriptOnce")'; end;
//PageContext 對象提供了更多插入方法, 下面幾個只是我找到執行順序的(下面次序就是我測試出的執行順序) PageContext.JavaScript; PageContext.AddToJavaScriptOnce(); PageContext.AddToOnReady(); PageContext.AddToInitProc(); PageContext.AddToIWCLInitProc(); PageContext.AddToInitProcPageUnlockCode(); PageContext.AddToInitProcFocusCode(); PageContext.AddToInitProcNewWindowCode(); PageContext.AddToInitProcDoLastCode();
//未完待續