import com.m8test.script.GlobalVariables.*
// ----------------------------------------------------
// 示例 2.10: Cookie 与本地存储管理 (完整代码)
// ----------------------------------------------------
_console.info("\n--- 开始示例 2.10: Cookie 与本地存储管理 ---")
// 1. 基础设置
val scope = _coroutines.newScope { setDispatcher { it.getIO() } }
val bridge = _webView.getBridge()
val controller = bridge.getController()
_activity.start()
// 2. 准备HTML
val html = "<html><body>存储测试页面</body></html>"
val domain = "storage.test"
val url = "https://$domain"
// 3. 开始异步操作链
scope.delay(1000)
.then { s, _: Any? -> controller.loadDataWithBaseURL(s, url, html, null, null, url) }
.then { s, _: Any? -> s.delay(1000) }
// --- Cookie 测试 ---
.then { s, _: Any? ->
_console.log("添加Cookie: 'user=M8Test'...")
controller.addCookie(s, "user", "M8Test", domain, "/")
}
.then { s, _: Any? -> controller.getCookie(s, "user") }
.then { s, cookieValue ->
_console.log("获取到的Cookie 'user':", cookieValue)
// cookieValue 应该是 String,这里加个空安全处理防止 null
_console.assertTrue(cookieValue?.toString() == "M8Test", "Cookie添加或获取失败")
controller.deleteAllCookies(s)
}
.then { s, _: Any? -> controller.getAllCookies(s) }
.then { s, cookies ->
_console.log("删除所有Cookie后:", cookies)
_console.assertTrue(cookies.isEmpty(), "删除所有Cookie失败")
// --- LocalStorage 测试 ---
controller.setLocalStorageItem(s, "theme", "dark")
}
.then { s, _: Any? -> controller.getLocalStorageItem(s, "theme") }
.then { s, theme ->
_console.log("获取到的LocalStorage 'theme':", theme)
_console.assertTrue(theme == "dark", "LocalStorage设置或获取失败")
controller.clearLocalStorage(s)
}
.then { s, _: Any? -> controller.getLocalStorageItem(s, "theme") }
.then { s, theme ->
_console.log("清空LocalStorage后 'theme':", theme)
_console.assertTrue(theme == null, "清空LocalStorage失败")
_console.info("--- 示例 2.10: 成功 ---")
s.resolve(null)
}
.onError { e -> _console.error("--- 示例 2.10: 失败 ---", e.stackTraceToString()) }
// ----------------------------------------------------
// 示例 2.10: Cookie 与本地存储管理 (完整代码)
// ----------------------------------------------------
$console.info("\n--- 开始示例 2.10: Cookie 与本地存储管理 ---")
// 1. 基础设置
def scope = $coroutines.newScope { it.setDispatcher { it.getIO() } }
def bridge = $webView.getBridge()
def controller = bridge.getController()
$activity.start()
// 2. 准备HTML
def html = "<html><body>存储测试页面</body></html>"
def domain = "storage.test"
def url = "https://${domain}"
// 3. 开始异步操作链
scope.delay(1000)
.then { s, _ -> controller.loadDataWithBaseURL(s, url, html, null, null, url) }
.then { s, _ -> s.delay(1000) }
// --- Cookie 测试 ---
.then { s, _ ->
$console.log("添加Cookie: 'user=M8Test'...")
return controller.addCookie(s, "user", "M8Test", domain, "/")
}
.then { s, _ -> controller.getCookie(s, "user") }
.then { s, cookieValue ->
$console.log("获取到的Cookie 'user':", cookieValue)
$console.assertTrue(cookieValue == "M8Test", "Cookie添加或获取失败")
return controller.deleteAllCookies(s)
}
.then { s, _ -> controller.getAllCookies(s) }
.then { s, cookies ->
$console.log("删除所有Cookie后:", cookies)
$console.assertTrue(cookies.isEmpty(), "删除所有Cookie失败")
// --- LocalStorage 测试 ---
return controller.setLocalStorageItem(s, "theme", "dark")
}
.then { s, _ -> controller.getLocalStorageItem(s, "theme") }
.then { s, theme ->
$console.log("获取到的LocalStorage 'theme':", theme)
$console.assertTrue(theme == "dark", "LocalStorage设置或获取失败")
return controller.clearLocalStorage(s)
}
.then { s, _ -> controller.getLocalStorageItem(s, "theme") }
.then { s, theme ->
$console.log("清空LocalStorage后 'theme':", theme)
$console.assertTrue(theme == null, "清空LocalStorage失败")
$console.info("--- 示例 2.10: 成功 ---")
return s.resolve(null)
}
.onError { e -> $console.error("--- 示例 2.10: 失败 ---", e.stackTraceToString()) }
// ----------------------------------------------------
// 示例 2.10: Cookie 与本地存储管理 (完整代码)
// ----------------------------------------------------
$console.info("\n--- 开始示例 2.10: Cookie 与本地存储管理 ---");
// 1. 基础设置
const scope = $coroutines.newScope(it => it.setDispatcher(it => it.getIO()));
const bridge = $webView.getBridge();
const controller = bridge.getController();
$activity.start();
// 2. 准备HTML
const html = "<html><body>存储测试页面</body></html>";
const domain = "storage.test";
const url = `https://${domain}`;
// 3. 开始异步操作链
scope.delay(1000)
.then((s, _) => controller.loadDataWithBaseURL(s, url, html, null, null, url))
.then((s, _) => s.delay(1000))
// --- Cookie 测试 ---
.then((s, _) => {
$console.log("添加Cookie: 'user=M8Test'...");
return controller.addCookie(s, "user", "M8Test", domain, "/");
})
.then((s, _) => controller.getCookie(s, "user"))
.then((s, cookieValue) => {
$console.log("获取到的Cookie 'user':", cookieValue);
$console.assertTrue(cookieValue == "M8Test", "Cookie添加或获取失败");
return controller.deleteAllCookies(s);
})
.then((s, _) => controller.getAllCookies(s))
.then((s, cookies) => {
$console.log("删除所有Cookie后:", cookies);
$console.assertTrue(cookies.isEmpty(), "删除所有Cookie失败");
// --- LocalStorage 测试 ---
return controller.setLocalStorageItem(s, "theme", "dark");
})
.then((s, _) => controller.getLocalStorageItem(s, "theme"))
.then((s, theme) => {
$console.log("获取到的LocalStorage 'theme':", theme);
$console.assertTrue(theme == "dark", "LocalStorage设置或获取失败");
return controller.clearLocalStorage(s);
})
.then((s, _) => controller.getLocalStorageItem(s, "theme"))
.then((s, theme) => {
$console.log("清空LocalStorage后 'theme':", theme);
$console.assertTrue(theme == null, "清空LocalStorage失败");
$console.info("--- 示例 2.10: 成功 ---");
return s.resolve(null);
})
.onError(e => $console.error("--- 示例 2.10: 失败 ---", e.stackTraceToString()));
-- ----------------------------------------------------
-- 示例 2.10: Cookie 与本地存储管理 (完整代码)
-- ----------------------------------------------------
_console:info("\n--- 开始示例 2.10: Cookie 与本地存储管理 ---")
-- 1. 基础设置
local scope = _coroutines:newScope(function(it) it:setDispatcher(function(it) return it:getIO() end) end)
local bridge = _webView:getBridge()
local controller = bridge:getController()
_activity:start()
-- 2. 准备HTML
local html = "<html><body>存储测试页面</body></html>"
local domain = "storage.test"
local url = "https://" .. domain
-- 3. 开始异步操作链
scope:delay(1000)
:_then(function(s, _) return controller:loadDataWithBaseURL(s, url, html, nil, nil, url) end)
:_then(function(s, _) return s:delay(1000) end)
-- --- Cookie 测试 ---
:_then(function(s, _)
_console:log("添加Cookie: 'user=M8Test'...")
return controller:addCookie(s, "user", "M8Test", domain, "/")
end)
:_then(function(s, _) return controller:getCookie(s, "user") end)
:_then(function(s, cookieValue)
_console:log("获取到的Cookie 'user':", cookieValue)
_console:assertTrue(cookieValue == "M8Test", "Cookie添加或获取失败")
return controller:deleteAllCookies(s)
end)
:_then(function(s, _) return controller:getAllCookies(s) end)
:_then(function(s, cookies)
_console:log("删除所有Cookie后:", cookies)
_console:assertTrue(cookies:isEmpty(), "删除所有Cookie失败")
-- --- LocalStorage 测试 ---
return controller:setLocalStorageItem(s, "theme", "dark")
end)
:_then(function(s, _) return controller:getLocalStorageItem(s, "theme") end)
:_then(function(s, theme)
_console:log("获取到的LocalStorage 'theme':", theme)
_console:assertTrue(theme == "dark", "LocalStorage设置或获取失败")
return controller:clearLocalStorage(s)
end)
:_then(function(s, _) return controller:getLocalStorageItem(s, "theme") end)
:_then(function(s, theme)
_console:log("清空LocalStorage后 'theme':", theme)
_console:assertTrue(theme == nil, "清空LocalStorage失败")
_console:info("--- 示例 2.10: 成功 ---")
return s:resolve(nil)
end)
:onError(function(e) _console:error("--- 示例 2.10: 失败 ---", e:stackTraceToString()) end)
<?php
/** @var m8test_java\com\m8test\script\core\api\console\Console $console */
global $console;
/** @var m8test_java\com\m8test\script\core\api\coroutines\Coroutines $coroutines */
global $coroutines;
/** @var m8test_java\com\m8test\script\core\api\ui\webview\WebView $webView */
global $webView;
/** @var m8test_java\com\m8test\script\core\api\ui\Activity $activity */
global $activity;
// ----------------------------------------------------
// 示例 2.10: Cookie 与本地存储管理 (完整代码)
// ----------------------------------------------------
$console->info(javaString("\n--- 开始示例 2.10: Cookie 与本地存储管理 ---"));
// 1. 基础设置
$scope = $coroutines->newScope(function ($it) {
$it->setDispatcher(function ($dispatchers) {
return $dispatchers->getScriptMain();
});
});
$bridge = $webView->getBridge();
$controller = $bridge->getController();
$activity->start();
// 2. 准备HTML
$html = "<html><body>存储测试页面</body></html>";
$domain = "storage.test";
$url = "https://" . $domain;
// 3. 开始异步操作链
$scope->delay(1000)
->then(function ($s, $unused) use ($controller, $url, $html) { return $controller->loadDataWithBaseURL($s, javaString($url), javaString($html), null, null, javaString($url)); })
->then(function ($s, $unused) { return $s->delay(1000); })
// --- Cookie 测试 ---
->then(function ($s, $unused) use ($controller, $domain) {
global $console;
$console->log(javaString("添加Cookie: 'user=M8Test'..."));
return $controller->addCookie($s, javaString("user"), javaString("M8Test"), javaString($domain), javaString("/"));
})
->then(function ($s, $unused) use ($controller) { return $controller->getCookie($s, javaString("user")); })
->then(function ($s, $cookieValue) use ($controller) {
global $console;
$console->log(javaString("获取到的Cookie 'user':"), $cookieValue);
$console->assertTrue($cookieValue == "M8Test", javaString("Cookie添加或获取失败"));
return $controller->deleteAllCookies($s);
})
->then(function ($s, $unused) use ($controller) { return $controller->getAllCookies($s); })
->then(function ($s, $cookies) use ($controller) {
global $console;
$console->log(javaString("删除所有Cookie后:"), $cookies);
$console->assertTrue(empty($cookies), javaString("删除所有Cookie失败"));
// --- LocalStorage 测试 ---
return $controller->setLocalStorageItem($s, javaString("theme"), javaString("dark"));
})
->then(function ($s, $unused) use ($controller) { return $controller->getLocalStorageItem($s, javaString("theme")); })
->then(function ($s, $theme) use ($controller) {
global $console;
$console->log(javaString("获取到的LocalStorage 'theme':"), $theme);
$console->assertTrue($theme == "dark", javaString("LocalStorage设置或获取失败"));
return $controller->clearLocalStorage($s);
})
->then(function ($s, $unused) use ($controller) { return $controller->getLocalStorageItem($s, javaString("theme")); })
->then(function ($s, $theme) {
global $console;
$console->log(javaString("清空LocalStorage后 'theme':"), $theme);
$console->assertTrue($theme == null, javaString("清空LocalStorage失败"));
$console->info(javaString("--- 示例 2.10: 成功 ---"));
return $s->resolve(null);
})
->onError(function ($e) {
global $console;
$console->error(javaString("--- 示例 2.10: 失败 ---"), $e->stackTraceToString());
});
#
# 示例 2.10: Cookie 与本地存储管理 (完整代码)
#
# 导入所需的全局变量
from m8test_java.com.m8test.script.GlobalVariables import _console
from m8test_java.com.m8test.script.GlobalVariables import _coroutines
from m8test_java.com.m8test.script.GlobalVariables import _webView
from m8test_java.com.m8test.script.GlobalVariables import _activity
_console.info("\n--- 开始示例 2.10: Cookie 与本地存储管理 ---")
# 1. 基础设置
scope = _coroutines.newScope(lambda it: it.setDispatcher(lambda d: d.getScriptMain()))
bridge = _webView.getBridge()
controller = bridge.getController()
_activity.start()
# 2. 准备HTML
html = "<html><body>存储测试页面</body></html>"
domain = "storage.test"
url = f"https://{domain}"
# 3. 开始异步操作链
scope.delay(1000).then(
lambda s, _: controller.loadDataWithBaseURL(s, url, html, None, None, url)
).then(
lambda s, _: s.delay(1000)
).then(lambda s, _: (
_console.log("添加Cookie: 'user=M8Test'..."),
controller.addCookie(s, "user", "M8Test", domain, "/")
)[-1]).then(
lambda s, _: controller.getCookie(s, "user")
).then(lambda s, cookieValue: (
_console.log("获取到的Cookie 'user':", cookieValue),
_console.assertTrue(cookieValue == "M8Test", "Cookie添加或获取失败"),
controller.deleteAllCookies(s)
)[-1]).then(
lambda s, _: controller.getAllCookies(s)
).then(lambda s, cookies: (
_console.log("删除所有Cookie后:", cookies),
_console.assertTrue(not cookies, "删除所有Cookie失败"),
controller.setLocalStorageItem(s, "theme", "dark")
)[-1]).then(
lambda s, _: controller.getLocalStorageItem(s, "theme")
).then(lambda s, theme: (
_console.log("获取到的LocalStorage 'theme':", theme),
_console.assertTrue(theme == "dark", "LocalStorage设置或获取失败"),
controller.clearLocalStorage(s)
)[-1]).then(
lambda s, _: controller.getLocalStorageItem(s, "theme")
).then(lambda s, theme: (
_console.log("清空LocalStorage后 'theme':", theme),
_console.assertTrue(theme is None, "清空LocalStorage失败"),
_console.info("--- 示例 2.10: 成功 ---"),
s.resolve(None)
)[-1]).onError(
lambda e: _console.error("--- 示例 2.10: 失败 ---", e.stackTraceToString())
)
# encoding: utf-8
# ----------------------------------------------------
# 示例 2.10: Cookie 与本地存储管理 (完整代码)
# ----------------------------------------------------
$console.info("\n--- 开始示例 2.10: Cookie 与本地存储管理 ---")
# 1. 基础设置
scope = $coroutines.newScope { |it| it.setDispatcher { |d| d.getIO() } }
bridge = $webView.getBridge()
controller = bridge.getController()
$activity.start()
# 2. 准备HTML
html = "<html><body>存储测试页面</body></html>"
domain = "storage.test"
url = "https://#{domain}"
# 3. 开始异步操作链
scope.delay(1000).
then { |s, _| controller.loadDataWithBaseURL(s, url, html, nil, nil, url) }.
then { |s, _| s.delay(1000) }.
# --- Cookie 测试 ---
then { |s, _|
$console.log("添加Cookie: 'user=M8Test'...")
controller.addCookie(s, "user", "M8Test", domain, "/")
}.
then { |s, _| controller.getCookie(s, "user") }.
then { |s, cookie_value|
$console.log("获取到的Cookie 'user':", cookie_value)
$console.assertTrue(cookie_value == "M8Test", "Cookie添加或获取失败")
controller.deleteAllCookies(s)
}.
then { |s, _| controller.getAllCookies(s) }.
then { |s, cookies|
$console.log("删除所有Cookie后:", cookies)
$console.assertTrue(cookies.isEmpty(), "删除所有Cookie失败")
# --- LocalStorage 测试 ---
controller.setLocalStorageItem(s, "theme", "dark")
}.
then { |s, _| controller.getLocalStorageItem(s, "theme") }.
then { |s, theme|
$console.log("获取到的LocalStorage 'theme':", theme)
$console.assertTrue(theme == "dark", "LocalStorage设置或获取失败")
controller.clearLocalStorage(s)
}.
then { |s, _| controller.getLocalStorageItem(s, "theme") }.
then { |s, theme|
$console.log("清空LocalStorage后 'theme':", theme)
$console.assertTrue(theme.nil?, "清空LocalStorage失败")
$console.info("--- 示例 2.10: 成功 ---")
s.resolve(nil)
}.
onError { |e| $console.error("--- 示例 2.10: 失败 ---", e.to_s) }