B2B网络软件
标题:
AIWROK苹果系统打印H5界面日志输出
[打印本页]
作者:
YYPOST群发软件
时间:
2 小时前
标题:
AIWROK苹果系统打印H5界面日志输出
AIWROK苹果系统打印H5界面日志输出
1.png
(780.19 KB, 下载次数: 0)
下载附件
2 小时前
上传
/**
* ============================================
* 日志桥接器 - 将print日志输出到H5界面
* 版本: 1.1.0
* 平台: iOS (AIWROK)
* 功能: 桥接print日志系统到现有H5界面
* 交流QQ群: 711841924 (群一) / 528816639 (苹果内测群)
* ============================================
*/
// 🍎交流QQ群:711841924(群)
// 🍎交流QQ群:528816639 (苹果内测群)
/**
* 阻塞式延迟函数 (Rhino引擎兼容)
* @param {number} ms - 延迟毫秒数
*/
function _sleep(ms) {
var start = Date.now();
while (Date.now() - start < ms) {
// 阻塞等待
}
}
/**
* LogBridge - 日志桥接器
* 将print日志系统的输出桥接到指定的WebView
*/
var LogBridge = {
webView: null,
isReady: false,
pendingLogs: [],
maxPendingLogs: 100,
/**
* 初始化桥接器
* @param {WebView} webView - 目标WebView实例
*/
init: function(webView) {
this.webView = webView;
this.isReady = false;
this.pendingLogs = [];
// 阻塞等待WebView加载完成
_sleep(800);
this.isReady = true;
this._flushPendingLogs();
printl('日志桥接器已就绪');
return this;
},
/**
* 发送日志到H5
* @param {string} message - 日志消息
* @param {string} level - 日志级别 (info/success/warn/error/gold/debug)
*/
log: function(message, level) {
level = level || 'info';
// 如果还没准备好,缓存日志
if (!this.isReady || !this.webView) {
if (this.pendingLogs.length < this.maxPendingLogs) {
this.pendingLogs.push({
message: message,
level: level,
time: Date.now()
});
}
return;
}
this._sendToWebView(message, level);
},
/**
* 刷新缓存的日志
*/
_flushPendingLogs: function() {
if (this.pendingLogs.length === 0) return;
printl('正在刷新 ' + this.pendingLogs.length + ' 条缓存日志...');
// 逐条发送缓存的日志
while (this.pendingLogs.length > 0) {
var log = this.pendingLogs.shift();
this._sendToWebView(log.message, log.level);
// 小延迟避免阻塞
_sleep(10);
}
},
/**
* 实际发送日志到WebView
*/
_sendToWebView: function(message, level) {
try {
if (!this.webView) return;
// 转义消息中的特殊字符
var escapedMessage = message
.replace(/\\/g, '\\\\')
.replace(/'/g, "\\'")
.replace(/"/g, '\\"')
.replace(/\n/g, '\\n')
.replace(/\r/g, '\\r')
.replace(/\t/g, '\\t');
// 构建JavaScript代码
var js = "if(typeof addLog === 'function') { addLog('" + escapedMessage + "', '" + level + "'); }";
// 尝试多种方式执行JavaScript
if (typeof this.webView.evaluateJavaScript === 'function') {
this.webView.evaluateJavaScript(js);
} else if (typeof this.webView.loadUrl === 'function') {
var url = 'javascript:' + encodeURIComponent(js);
this.webView.loadUrl(url);
} else if (typeof this.webView.stringByEvaluatingJavaScriptFromString === 'function') {
this.webView.stringByEvaluatingJavaScriptFromString(js);
}
} catch (e) {
printl('发送日志失败: ' + e.message);
}
},
// 快捷方法
info: function(message) { this.log(message, 'info'); },
success: function(message) { this.log(message, 'success'); },
warn: function(message) { this.log(message, 'warn'); },
error: function(message) { this.log(message, 'error'); },
gold: function(message) { this.log(message, 'gold'); },
debug: function(message) { this.log(message, 'debug'); }
};
/**
* 增强版LogManager - 自动桥接到H5
*/
var LogManagerH5 = {
logLevel: 'DEBUG',
enablePrefix: true,
bridge: null,
ICONS: {
DEBUG: '[D]',
INFO: '[I]',
WARN: '[W]',
ERROR: '[E]',
SUCCESS: '[S]',
GOLD: '[G]'
},
/**
* 初始化并绑定到WebView
* @param {WebView} webView - H5的WebView实例
*/
init: function(webView) {
this.bridge = LogBridge;
this.bridge.init(webView);
this.info('日志系统已连接到H5界面');
return this;
},
_formatMessage: function(message, icon) {
if (this.enablePrefix && icon) {
return icon + ' ' + message;
}
return message;
},
debug: function(message) {
if (this.bridge) {
this.bridge.log(this._formatMessage(message, this.ICONS.DEBUG), 'debug');
}
printl(message);
},
info: function(message) {
if (this.bridge) {
this.bridge.log(this._formatMessage(message, this.ICONS.INFO), 'info');
}
print.log(message);
},
warn: function(message) {
if (this.bridge) {
this.bridge.log(this._formatMessage(message, this.ICONS.WARN), 'warn');
}
print.warn(message);
},
error: function(message) {
if (this.bridge) {
this.bridge.log(this._formatMessage(message, this.ICONS.ERROR), 'error');
}
print.warn(message);
},
success: function(message) {
if (this.bridge) {
this.bridge.log(this._formatMessage(message, this.ICONS.SUCCESS), 'success');
}
print.log(message);
},
gold: function(message) {
if (this.bridge) {
this.bridge.log(this._formatMessage(message, this.ICONS.GOLD), 'gold');
}
print.log(message);
}
};
/**
* 使用示例:
*
* // 在你的主脚本中:
* Import("LogBridge.js");
*
* var web = new WebView();
* web.show();
* web.loadFile('h5.html');
*
* // 初始化日志桥接 (会阻塞等待WebView加载)
* LogManagerH5.init(web);
*
* // 现在所有日志都会输出到H5界面
* LogManagerH5.info('系统启动');
* LogManagerH5.success('任务完成');
* LogManagerH5.gold('获得100金币');
*/
/**
* ============================================
* 🍎 print日志系统完整示例
* 功能: 日志记录、调试输出、画中画管理
* 交流QQ群: 711841924 (群一) / 528816639 (苹果内测群)
* ============================================
*/
复制代码
苹果H5界面.zip
(19.43 KB, 下载次数: 0)
2 小时前
上传
点击文件名下载附件
3.png
(923.06 KB, 下载次数: 0)
下载附件
2 小时前
上传
欢迎光临 B2B网络软件 (http://bbs.niubt.cn/)
Powered by Discuz! X3.2