自动发帖软件
标题:
AIWORK软件配置读写H5演示配套脚本
[打印本页]
作者:
发帖软件
时间:
3 小时前
标题:
AIWORK软件配置读写H5演示配套脚本
AIWORK软件配置读写H5演示配套脚本
1.png
(617.39 KB, 下载次数: 0)
3 小时前
上传
6.png
(1.36 MB, 下载次数: 0)
3 小时前
上传
//🍎交流QQ群711841924群一,苹果内测群,528816639
// AIWROK配置读写H5演示配套脚本
// 本文件提供了详细的配置读写示例和说明,与config_h5_demo.html配合使用
// 注意:此代码需在AIWROK环境中运行,因为config对象由AIWROK提供
// 修复window.onload与window.onLoad的兼容性问题
// AIWROK环境使用onLoad(大写L),而标准浏览器使用onload(小写l)
if (typeof window !== 'undefined') {
// 安全地检查window.onLoad和window.onload
try {
var hasOnLoad = typeof window.onLoad === 'function';
var hasOnload = typeof window.onload === 'function';
if (hasOnLoad && !hasOnload) {
// 如果存在window.onLoad但不存在window.onload,则创建window.onload的别名
window.onload = window.onLoad;
}
} catch (e) {
// 忽略任何错误
}
// 安全地处理AIWROK特定的Windows对象(大写W)
try {
if (typeof window.Windows !== 'undefined') {
// 使用try-catch安全访问Java对象的属性
window.Windows.onload = function(callback) {
if (typeof window.Windows.onLoad === 'function') {
window.Windows.onLoad(callback);
}
};
}
} catch (e) {
// 忽略任何错误
}
}
// 配置文件路径常量
var CONFIG_FILE_PATH = '/sdcard/aiwrok_h5_config.ini';
/**
* 检查AIWROK环境是否可用
*/
function checkAIWROKEnvironment() {
var isAIWROKEnvironment = typeof config !== 'undefined' &&
typeof config.setConfig === 'function' &&
typeof config.getConfig === 'function';
if (!isAIWROKEnvironment) {
printl('⚠️ 错误:当前环境不是AIWROK环境,config对象不可用!');
printl('请确保在AIWROK环境中运行此脚本。');
return false;
}
// 检查文件系统访问权限(尝试写入一个简单的配置项来测试)
try {
config.setConfig(CONFIG_FILE_PATH, '_test_access', '1');
config.getConfig(CONFIG_FILE_PATH, '_test_access', '0');
config.setConfig(CONFIG_FILE_PATH, '_test_access', ''); // 清理测试项
return true;
} catch (e) {
printl('⚠️ 错误:无法访问配置文件路径!');
printl('错误信息:' + e.message);
printl('请检查是否有文件系统访问权限,以及路径是否正确。');
return false;
}
}
/**
* 主函数:执行配置读写演示
*/
function runConfigDemo() {
printl('===== AIWROK配置读写H5演示配套脚本 =====');
printl('本脚本与config_h5_demo.html配合使用,展示配置读写的详细功能');
// 检查AIWROK环境
if (!checkAIWROKEnvironment()) {
printl('\n===== 演示失败:环境检查未通过 =====');
return;
}
printl('\n✅ 环境检查通过,开始演示...');
// 演示基本功能
demonstrateBasicFunctions();
// 演示高级功能
demonstrateAdvancedFunctions();
// 演示错误处理
demonstrateErrorHandling();
// 演示H5集成功能
h5IntegrationHelpers();
printl('\n===== 演示完成 =====');
// 将提示信息移到函数内部,在演示过程中显示
printl('\n提示:在实际使用中,请确保有正确的文件系统访问权限,并根据您的实际需求修改配置文件路径和配置项。');
printl('本脚本可以独立运行,也可以与config_h5_demo.html配合使用。');
}
/**
* 演示基本配置读写功能
*/
function demonstrateBasicFunctions() {
printl('\n1. 基本配置读写功能演示:');
try {
// 写入配置示例
printl(' 写入配置示例:');
// 写入字符串配置
printl(' - 准备写入: demo_name = 中文H5配置演示');
var result1 = config.setConfig(CONFIG_FILE_PATH, 'demo_name', '中文H5配置演示');
printl(' - 写入结果: ' + (result1 ? '成功' : '失败'));
// 写入数字配置
printl(' - 准备写入: demo_version = 1.0.0');
var result2 = config.setConfig(CONFIG_FILE_PATH, 'demo_version', '1.0.0');
printl(' - 写入结果: ' + (result2 ? '成功' : '失败'));
// 写入布尔配置
printl(' - 准备写入: demo_enabled = true');
var result3 = config.setConfig(CONFIG_FILE_PATH, 'demo_enabled', 'true');
printl(' - 写入结果: ' + (result3 ? '成功' : '失败'));
// 读取配置示例
printl('\n 读取配置示例:');
var demoName = config.getConfig(CONFIG_FILE_PATH, 'demo_name', 'Default_Demo');
printl(' - 读取demo_name: ' + demoName + (demoName === '中文H5配置演示' ? ' (正确)' : ' (错误)'));
var demoVersion = config.getConfig(CONFIG_FILE_PATH, 'demo_version', '0.0.1');
printl(' - 读取demo_version: ' + demoVersion + (demoVersion === '1.0.0' ? ' (正确)' : ' (错误)'));
var demoEnabled = config.getConfig(CONFIG_FILE_PATH, 'demo_enabled', 'false');
printl(' - 读取demo_enabled: ' + demoEnabled + (demoEnabled === 'true' ? ' (正确)' : ' (错误)'));
// 使用默认值读取不存在的配置
var nonExistent = config.getConfig(CONFIG_FILE_PATH, 'non_existent_key', 'default_value');
printl(' - 读取不存在的配置(使用默认值): ' + nonExistent);
} catch (e) {
printl(' 基本功能演示出错: ' + e.message);
console.error('基本功能演示出错: ', e);
}
}
/**
* 演示高级配置功能
*/
function demonstrateAdvancedFunctions() {
printl('\n2. 高级配置功能演示:');
// 创建配置管理器实例
var configManager = new ConfigManager(CONFIG_FILE_PATH);
try {
// 使用配置管理器写入配置
printl(' 使用配置管理器写入配置:');
configManager.set('user_name', '测试用户');
printl(' - 已写入user_name: 测试用户');
configManager.set('user_age', 25);
printl(' - 已写入user_age: 25');
configManager.set('user_active', true);
printl(' - 已写入user_active: true');
// 使用配置管理器读取配置
printl('\n 使用配置管理器读取配置:');
var userName = configManager.get('user_name', 'default_user');
printl(' - 读取user_name: ' + userName);
var userAge = configManager.getNumber('user_age', 18);
printl(' - 读取user_age(数字类型): ' + userAge + ' (类型: ' + typeof userAge + ')');
var userActive = configManager.getBoolean('user_active', false);
printl(' - 读取user_active(布尔类型): ' + userActive + ' (类型: ' + typeof userActive + ')');
// 配置批量操作示例
printl('\n 配置批量操作示例:');
var batchConfig = {
'app_name': 'AIWROK_H5_Demo',
'app_author': 'AIWROK_Team',
'app_date': getCurrentDate()
};
// 批量写入
for (var key in batchConfig) {
if (batchConfig.hasOwnProperty(key)) {
configManager.set(key, batchConfig[key]);
printl(' - 批量写入: ' + key + ' = ' + batchConfig[key]);
}
}
// 批量读取
var keys = ['app_name', 'app_author', 'app_date'];
printl('\n 批量读取:');
for (var i = 0; i < keys.length; i++) {
var value = configManager.get(keys[i], '未设置');
printl(' ' + keys[i] + ': ' + value);
}
} catch (e) {
printl(' 高级功能演示出错: ' + e.message);
}
}
/**
* 演示错误处理
*/
function demonstrateErrorHandling() {
printl('\n3. 错误处理演示:');
try {
// 尝试写入不存在的路径(可能会失败)
printl(' 错误处理示例:');
// 尝试写入到一个可能没有权限的路径
try {
config.setConfig('/system/protected/config.ini', 'test_key', 'test_value');
printl(' - 写入受保护路径成功(可能有权限问题)');
} catch (e) {
printl(' - 写入受保护路径失败(预期行为): ' + e.message);
}
// 优雅地处理错误
printl('\n 优雅的错误处理示例:');
function safeSetConfig(key, value) {
try {
config.setConfig(CONFIG_FILE_PATH, key, value);
return true;
} catch (e) {
printl(' - 安全写入失败: ' + key + ', 错误: ' + e.message);
return false;
}
}
// 使用安全写入函数
safeSetConfig('safe_key', 'safe_value');
safeSetConfig('another_key', 'another_value');
printl(' - 安全写入完成');
} catch (e) {
printl(' 错误处理演示出错: ' + e.message);
}
}
/**
* 配置管理器类(ES5兼容版)
*/
function ConfigManager(filePath) {
this.filePath = filePath;
}
// 配置管理器原型方法
ConfigManager.prototype = {
constructor: ConfigManager,
/**
* 设置配置项
* @param {string} key - 配置项名称
* @param {*} value - 配置项值
* @returns {boolean} - 是否成功
*/
set: function(key, value) {
try {
var result = config.setConfig(this.filePath, key, String(value));
printl(' → ConfigManager.set(' + key + ', ' + value + ') = ' + (result ? '成功' : '失败'));
return true;
} catch (e) {
printl(' → ConfigManager.set(' + key + ', ' + value + ') 失败: ' + e.message);
console.error('设置配置失败: ' + e.message);
return false;
}
},
/**
* 获取配置项
* @param {string} key - 配置项名称
* @param {*} defaultValue - 默认值
* @returns {string} - 配置项值
*/
get: function(key, defaultValue) {
try {
var defaultVal = defaultValue !== undefined ? String(defaultValue) : '';
var result = config.getConfig(this.filePath, key, defaultVal);
printl(' → ConfigManager.get(' + key + ', ' + defaultVal + ') = ' + result);
return result;
} catch (e) {
printl(' → ConfigManager.get(' + key + ', ' + defaultVal + ') 失败: ' + e.message);
console.error('获取配置失败: ' + e.message);
return defaultValue !== undefined ? defaultValue : '';
}
},
/**
* 获取布尔类型配置项
* @param {string} key - 配置项名称
* @param {boolean} defaultValue - 默认值
* @returns {boolean} - 布尔值
*/
getBoolean: function(key, defaultValue) {
var value = this.get(key, defaultValue ? 'true' : 'false');
return value.toLowerCase() === 'true' || value === '1';
},
/**
* 获取数字类型配置项
* @param {string} key - 配置项名称
* @param {number} defaultValue - 默认值
* @returns {number} - 数字值
*/
getNumber: function(key, defaultValue) {
var value = this.get(key, defaultValue !== undefined ? String(defaultValue) : '0');
return parseFloat(value) || 0;
},
/**
* 批量设置配置
* @param {Object} configObj - 配置对象
* @returns {boolean} - 是否全部成功
*/
setBatch: function(configObj) {
var allSuccess = true;
for (var key in configObj) {
if (configObj.hasOwnProperty(key)) {
if (!this.set(key, configObj[key])) {
allSuccess = false;
}
}
}
return allSuccess;
},
/**
* 批量获取配置
* @param {Array} keys - 配置项名称数组
* @param {Object} defaultValues - 默认值对象
* @returns {Object} - 配置对象
*/
getBatch: function(keys, defaultValues) {
var result = {};
defaultValues = defaultValues || {};
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
var defaultValue = defaultValues[key] !== undefined ? defaultValues[key] : '';
result[key] = this.get(key, defaultValue);
}
return result;
}
};
/**
* 获取当前日期时间字符串
*/
function getCurrentDate() {
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth() + 1;
var day = now.getDate();
var hours = now.getHours();
var minutes = now.getMinutes();
var seconds = now.getSeconds();
// 格式化日期时间
return year + '-' + padZero(month) + '-' + padZero(day) + ' ' +
padZero(hours) + ':' + padZero(minutes) + ':' + padZero(seconds);
}
/**
* 数字补零
*/
function padZero(num) {
return num < 10 ? '0' + num : num;
}
/**
* 与H5页面集成的辅助函数
*/
function h5IntegrationHelpers() {
printl('\n4. H5页面集成辅助函数:');
printl(' 以下是与config_h5_demo.html配合使用的辅助函数');
// 注意:这些函数在H5页面中已通过JavaScript实现,这里仅作为示例展示
printl(' - saveConfig(): 保存页面上的所有配置到文件');
printl(' - loadConfig(): 从文件加载配置到页面');
printl(' - clearConfig(): 清除页面上的所有配置');
printl(' - ConfigManager: 配置管理辅助类,简化配置读写');
}
/**
* H5页面中使用的配置同步函数
* 注意:此函数在H5页面中已实现,这里仅作为示例
*/
function syncConfigFromH5ToNative(configData) {
/**
* 从H5页面同步配置到本地文件
* @param {Object} configData - H5页面的配置数据
*/
printl('\n5. H5与Native配置同步示例:');
printl(' 从H5页面同步配置到本地文件的示例函数');
if (typeof configData === 'object' && configData !== null) {
printl(' - 同步配置数据:');
for (var key in configData) {
if (configData.hasOwnProperty(key)) {
printl(' ' + key + ': ' + configData[key]);
// 实际保存配置到本地文件
try {
config.setConfig(CONFIG_FILE_PATH, key, String(configData[key]));
printl(' ✓ 已保存到配置文件');
} catch (e) {
printl(' ✗ 保存失败: ' + e.message);
}
}
}
// 验证配置是否正确保存
printl('\n - 验证保存的配置:');
for (var key in configData) {
if (configData.hasOwnProperty(key)) {
var savedValue = config.getConfig(CONFIG_FILE_PATH, key, '未找到');
printl(' ' + key + ': ' + savedValue + (savedValue === String(configData[key]) ? ' (匹配)' : ' (不匹配)'));
}
}
} else {
printl(' - 无效的配置数据');
}
}
/**
* 验证配置文件内容的函数
*/
function verifyConfigFileContent() {
printl('\n6. 配置文件内容验证:');
printl(' 验证配置文件中实际存储的内容');
try {
// 列出所有演示中使用的配置项
var testKeys = [
'demo_name', 'demo_version', 'demo_enabled',
'user_name', 'user_age', 'user_active',
'app_name', 'app_author', 'app_date'
];
printl(' - 配置文件路径: ' + CONFIG_FILE_PATH);
printl(' - 配置项验证结果:');
var allCorrect = true;
for (var i = 0; i < testKeys.length; i++) {
var key = testKeys[i];
var value = config.getConfig(CONFIG_FILE_PATH, key, '**未找到**');
printl(' ' + key + ': ' + value);
if (value === '**未找到**') {
allCorrect = false;
}
}
printl('\n - 验证结果: ' + (allCorrect ? '✅ 所有配置项都已正确保存' : '⚠️ 部分配置项未找到'));
} catch (e) {
printl(' 配置文件验证出错: ' + e.message);
console.error('配置文件验证出错: ', e);
}
}
/**
* 执行演示
*/
try {
runConfigDemo();
// 验证配置文件内容
verifyConfigFileContent();
/**
* 导出配置管理器供其他脚本使用
*/
if (typeof module !== 'undefined' && module.exports) {
module.exports = ConfigManager;
}
printl('\n📝 最终提示:');
printl(' - 配置文件已保存到: ' + CONFIG_FILE_PATH);
printl(' - 您可以在AIWROK环境中查看或编辑该文件');
printl(' - 如果配置文件未正确读写,请检查文件系统访问权限');
} catch (e) {
// 捕获任何可能的异常,避免传播到AIWROK环境
console.error('演示执行异常: ' + e.message);
printl('\n❌ 演示执行失败: ' + e.message);
}
复制代码
欢迎光临 自动发帖软件 (http://www.fatiegongju.com/)
Powered by Discuz! X3.2