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的更新,默認情況下已禁用非安全腳本功能。

