view對象的詳細文檔請看:
https://sciter.com/docs/content/sciter/View.htm
demo9.html代碼如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>view對象學習</title> <style> .br { width: 100%; border: 1px solid #ccc; margin: 10px auto; } </style> </head> <body> <div class="br"> <button id="selFile">選擇文件</button> <span id="filePath"></span> <br> <button id="selFolder">選擇目錄</button> <span id="folderPath"></span> <br> <button id="moveFile">移動</button> <span id="moveRet"></span> </div> <div class="br"> <button id="msgbox1">消息框</button> <br> <button id="msgbox2">信息框</button> <br> <button id="msgbox3">問題框</button> <br> <button id="msgbox4">警告框</button> <br> <button id="msgbox5">錯誤框</button> </div> <div class="br"> <button id="dlg1">對話框</button> </div> <div class="br"> <button id="win1">窗口</button> <br> </div> <div class="br"> <button id="state1">全屏</button> <button id="state2">默認</button> <button id="state3">關閉</button> </div> <div class="br"> <button id="req">請求</button> 結果: <iframe id="reqRet"></iframe> </div> <script type="text/tiscript"> self.ready = function() { var file = ""; var folder = ""; //選擇文件 $(#selFile).on("click", function() { //文件篩選項 const filter = "Image Files (*.jpg,*.jpeg,*.gif,*.png)|*.jpg;*.jpeg;*.gif;*.png|All Files (*.*)|*.*"; //默認后綴 const defaultExt = "jpg"; //初始化路徑,就是文件選擇窗打開時所在路徑 const initialPath = System.path(#USER_DOCUMENTS); //標題 const caption = "選擇圖片"; file = view.selectFile(#open, filter, defaultExt, initialPath, caption ); $(#filePath).text = file; return true; }); //選擇文件夾 $(#selFolder).on("click", function() { folder = view.selectFolder("選擇你的文件夾"); $(#folderPath).text = folder; }); //移動文件 $(#moveFile).on("click", function() { if(file && folder) { //調用go中定義的函數進行移動文件處理 var ret = view.moveFile(file, folder); $(#moveRet).text = ret; } }); //消息框 $(#msgbox1).on("click", function() { view.msgbox(#alert, "我是消息框"); }); //信息框 $(#msgbox2).on("click", function() { view.msgbox(#information, "我是信息框", "信息框"); }); //問題框 $(#msgbox3).on("click", function() { view.msgbox(#question, "請選擇是或否", "問題框", //按鈕組 [{id:#yes,text:"是"},{id:#no,text:"否"}], //onLoad,窗口加載時調用 function(root) { }, //onClose,窗口關閉時調用 function(root, id) { //id表示你選擇按鈕的ID if(id == "yes") { view.msgbox(#alert, "你選擇的yes"); } else { view.msgbox(#alert, "你選擇的no"); } }); }); //警告框 $(#msgbox4).on("click", function() { view.msgbox(#warning, "我是警告框"); }); //錯誤框 $(#msgbox5).on("click", function() { view.msgbox(#error, "我是錯誤框"); }); //新對話框 $(#dlg1).on("click", function() { var dlg = view.dialog({ //加載到對話框中的URL,可加載本地文件 url: self.url("simple.html"), //對話框的x,y坐標 x: 50, y: 50, //窗口的寬度,高度 width: 200, height: 200, //是否是客戶區,如果為真,那么x,y,width,height作為客戶區坐標,而不是窗口 client: false, //對話框參數 parameters: {"test":"test"}, //對話框標題 caption: "新對話框", //相對於屏幕窗口對齊 alignment: 3, }); }); //新窗口 $(#win1).on("click", function() { var win = view.window({ //窗口類型 //View.FRAME_WINDOW 框架窗口 //View.TOOL_WINDOW 工具窗口 //View.POPUP_WINDOW 彈出窗口 type: View.TOOL_WINDOW, //加載到窗口中的URL,可加載本地文件 url: self.url("simple.html"), //窗口的x,y坐標 x: 200, y: 200, //窗口的寬度,高度 width: 400, height: 400, //是否是客戶區,如果為真,那么x,y,width,height作為客戶區坐標,而不是窗口 client: false, //窗口狀態 //View.WINDOW_SHOWN 顯示 //View.WINDOW_HIDDEN 隱藏 //View.WINDOW_MINIMIZED 最小化 //View.WINDOW_MAXIMIZED 最大化 //View.WINDOW_FULL_SCREEN 全屏 state: View.WINDOW_SHOWN, //窗口參數 parameters: {"test":"test"}, //窗口標題 caption: "新窗口", //相對於屏幕窗口對齊 alignment: 3, }); //訪問窗口中設置的參數 stdout.println(win.parameters["test"]); }); //修改當前窗口的狀態 $(#state1).on("click", function() { //全屏 view.state = View.WINDOW_FULL_SCREEN; }); $(#state2).on("click", function() { //默認 view.state = View.WINDOW_SHOWN; }); $(#state3).on("click", function() { //關閉 view.close(); }); //view的事件響應 //視圖窗口大小發生改變時 view.on("sizing", function(sizingParams) { view.dump("大小改變", sizingParams.x, sizingParams.y, sizingParams.width, sizingParams.height); }); //視圖窗口移動時 view.on("moving", function(movingParams) { view.dump("移動改變", movingParams.x, movingParams.y, movingParams.width, movingParams.height); }); //視圖窗口狀態改變時 view.on("statechange", function() { view.dump(view.state); }); //請求方法類似jquery中的ajax $(#req).on("click", function() { view.request({ //請求類型(#get, #post, #put, #delete) type: #get, //請求url url: "http://www.163.com", //協議(#basic, #multipart, #json) protocol: #basic, params: { "test": "test" }, //成功回調函數 success: function(data,status) { $(#reqRet).html = data; }, //失敗回調函數 error: function(err,status) { } }); }); }; </script> </body> </html>
demo9.go代碼如下:
package main; import ( "github.com/sciter-sdk/go-sciter/window" "github.com/sciter-sdk/go-sciter" "log" "os" "strings" "path/filepath" "io/ioutil" "fmt" ) func defFunc(w *window.Window) { //注冊dump函數方便在tis腳本中打印數據 w.DefineFunction("dump", func(args ...*sciter.Value) *sciter.Value { for _, v := range args { fmt.Print(v.String() + " "); } fmt.Println(); return sciter.NullValue(); }); //處理文件移動 w.DefineFunction("moveFile", func(args ...*sciter.Value) *sciter.Value { file := args[0].String(); folder := args[1].String(); //去掉路徑左邊的file:// file = strings.TrimLeft(file, "file://"); //獲取文件名 fileName := filepath.Base(file); //讀取文件數據 data, err := ioutil.ReadFile(file); if err != nil { return sciter.NewValue(err.Error()); } //寫入文件數據 err = ioutil.WriteFile(filepath.Join(folder, fileName), data, os.ModePerm); if err == nil { //刪除原文件 os.Remove(file); return sciter.NewValue("移動成功"); } else { return sciter.NewValue("移動失敗"); } }); } func main() { w, err := window.New(sciter.DefaultWindowCreateFlag, sciter.DefaultRect); if err != nil { log.Fatal(err); } //注意這個地方,sciter較新的版默認的情況下禁用了非安全腳本功能 //需要設置下配置,開啟此功能,不然tiscript中打開文件或目錄將無法使用。 w.SetOption(sciter.SCITER_SET_SCRIPT_RUNTIME_FEATURES, sciter.ALLOW_FILE_IO | sciter.ALLOW_SOCKET_IO | sciter.ALLOW_SYSINFO); w.LoadFile("demo9.html"); w.SetTitle("view對象學習"); defFunc(w); w.Show(); w.Run(); }
顯示結果如下:
關於選擇文件,選擇目錄,無法使用的說明。
由於sciter的更新,默認情況下已禁用非安全腳本功能。