Epub阅读器0.0.1

This commit is contained in:
shen
2026-05-21 19:40:51 +08:00
commit daa36d8fe7
559 changed files with 106266 additions and 0 deletions
+237
View File
@@ -0,0 +1,237 @@
(function() /** {$b5167ccadfb66ea3ba95d92d7c9946c9} */{
WeReadBridge = function() /** {$b9c7abd4d524a31563f1f27b768c47a9} */ {
this._sendMessageQueue = [];
this._callback_count = 1000;
this._callback_map = {};
this.available_func = {};
this._iframe = document.createElement("iframe");
this._iframe.setAttribute("id", "iframe");
this._iframe.setAttribute("style","position:absolute;top:0;left:0;width:1px;height:1px;visibility:hidden;");
this._QUEUE_HAS_MESSAGE_URL = 'wereadapijs://dispatch_message/';
document.body.appendChild(this._iframe);
this._resultIframe = document.createElement("iframe");
this._resultIframe.setAttribute("id", "_resultIframe");
this._resultIframe.setAttribute("style","position:absolute;top:0;left:0;width:1px;height:1px;visibility:hidden;");
this._resultIframe._SET_RESULT_URL = 'wereadapijs://private/setresult/';
document.body.appendChild(this._resultIframe);
}
window.callback = {}
function wrapCallback(name, callback) {
window.callback[name] = callback;
return name;
}
WeReadBridge.prototype.handleWithRichEditor = function(apiName, params,successCallback, failCallback) {
//alert("hi");
this._call(apiName,params,function(successOrNot, result) {
if (typeof successCallback === "function" || typeof failCallback === "function") {
self._handleCallback(result, successOrNot, successCallback, failCallback);
};
});
}
WeReadBridge.prototype.execMPReaderMethod = function(apiName, params, successCallback, failCallback) {
this._call(apiName,params,function(successOrNot, result) {
if (typeof successCallback === "function" || typeof failCallback === "function") {
self._handleCallback(result, successOrNot, successCallback, failCallback);
};
});
}
WeReadBridge.prototype.fetchQueue = function() /** {$4a202e1afc4b36610e87f574e5478e15} */ {
var messageQueueString = JSON.stringify(this._sendMessageQueue);
this._sendMessageQueue = [];
this._setResultValue('fetchqueue', messageQueueString);
return messageQueueString;
}
WeReadBridge.prototype._setResultValue = function(scene, result) /** {$23e4b67694084da787d5fa5c739b9a66} */ {
// Android 通过另一个iframe上传数据
if (result === undefined) {
result = '';
}
this._resultIframe.src = this._resultIframe._SET_RESULT_URL + scene + '&' + this._base64Encode(this._utf8Encode(result));
}
// public method for url encoding
WeReadBridge.prototype._utf8Encode = function(str) /** {$9da9355c0a506c2d0c6dd40c35ea7fb6} */ {
str = str.replace(/\r\n/g, "\n");
var utftext = "";
for (var n = 0; n < str.length; n++) {
var c = str.charCodeAt(n);
if (c < 128) {
utftext += String.fromCharCode(c);
} else if ((c > 127) && (c < 2048)) {
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
} else {
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
}
return utftext;
}
WeReadBridge.prototype._base64Encode = function(str) /** {$caa95e8456b5cda1716514776a0bf77a} */ {
//base64编码
var base64encodechars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
if (str === undefined) {
return str;
}
var out, i, len;
var c1, c2, c3;
len = str.length;
i = 0;
out = "";
while (i < len) {
c1 = str.charCodeAt(i++) & 0xff;
if (i == len) {
out += base64encodechars.charAt(c1 >> 2);
out += base64encodechars.charAt((c1 & 0x3) << 4);
out += "==";
break;
}
c2 = str.charCodeAt(i++);
if (i == len) {
out += base64encodechars.charAt(c1 >> 2);
out += base64encodechars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4));
out += base64encodechars.charAt((c2 & 0xf) << 2);
out += "=";
break;
}
c3 = str.charCodeAt(i++);
out += base64encodechars.charAt(c1 >> 2);
out += base64encodechars.charAt(((c1 & 0x3) << 4) | ((c2 & 0xf0) >> 4));
out += base64encodechars.charAt(((c2 & 0xf) << 2) | ((c3 & 0xc0) >> 6));
out += base64encodechars.charAt(c3 & 0x3f);
}
return out;
}
WeReadBridge.prototype._sendMessage = function(message) /** {$0685a6a5b33dbf2f615a5ae1faedb0c8} */ {
this._sendMessageQueue.push(message);
this._iframe.src = this._QUEUE_HAS_MESSAGE_URL;
}
WeReadBridge.prototype.handleMessage = function(message) /** {$623f3ca7480b38b659e4f32c858046f4} */ {
var callbackId = message["callbackId"];
if (!callbackId || typeof callbackId !== 'string') {
return;
}
var successOrNot = message["successOrNot"];
var params = message["params"];
if (typeof this._callback_map[callbackId] === "function"){
this._callback_map[callbackId](successOrNot,params);
delete this._callback_map[callbackId];
}
}
WeReadBridge.prototype._call = function(func, params, callback) /** {$0a78d8c17b87d24c599c91b498b8662b} */ {
if (!func || typeof func !== "string") {
return;
}
if (typeof params !== "object") {
params = {};
}
var msgObj = {"func":func,"params":params};
var callbackID = (this._callback_count++).toString();
params["callbackId"] = callbackID;
if (typeof callback === "function") {
this._callback_map[callbackID] = callback;
msgObj["callbackId"] = callbackID;
}
this._sendMessage(JSON.stringify(msgObj));
}
WeReadBridge.prototype._handleCallback = function(result, successOrNot, successCallback, failCallback) {
// Android 返回 JSON String,在这里转JSON
resultJSON = (typeof result == 'string') ? JSON.parse(result) : result;
if (successOrNot) {
successCallback(resultJSON);
} else {
failCallback(resultJSON);
}
}
WeReadBridge.prototype.onReady = function(func) /** {$9ce323af53931aa37c8788958d68f687} */ {
!_isReady && _bindReadyFuns.unshift([this, func]);
}
WeReadBridge.prototype.bindReady = function(func) /** {$d3b152348187da57f207a3a3eb27fa54} */ {
!_isReady ? _bindReadyFuns.unshift([this, func]) : func.call(this);
}
WeReadBridge.prototype.isReady = function() /** {$9c23e94ea3f2aafaae1c349574569f78} */ {
return _isReady;
}
WeReadBridge.prototype.isAvailable = function(apiName) /** {$67e34482192a8170c150ec414ed4ba7a} */ {
return !!(_WeReadBridgeInfo && _WeReadBridgeInfo["apis"][apiName]);
}
var _isReady, _WeReadBridgeInfo, _bindReadyFuns = [],
_onReady = function() /** {$d1b53430a7b4de2d74d12a81eec715ec} */ {
_WeReadBridgeInfo = window["__QMB_INFO__"];
if (_isReady) return;
_isReady = true;
var _funcParams;
while (_funcParams = _bindReadyFuns.pop()) {
_funcParams[1].call(_funcParams[0]);
};
};
window["wereadBridge"] = new WeReadBridge();
if (window["__WRB_INFO__"]) {
_onReady();
} else {
window["__WRB_INFO_CALL__"] = function() /** {$4f54cf9d496e3e999912adfb7b5d37b7} */ {
_onReady();
};
}
})();
// /** 函数模板
// * func_name description
// * @param successCallback(result) result["param_name"]
// * @param failCallback(result) result["param_name"]
// */
// WeReadBridge.prototype.func_name = function(params, successCallback, failCallback) {
// var self = this;
// this._call("func_name", params, function(successOrNot, result) {
// var params = {"func_name":result};
// self.localLog(params);
// if (successOrNot) {
// successCallback(result);
// } else {
// failCallback(result);
// }
// });
// }
// window.wereadBridge = new WeReadBridge();
// window.wereadBridge.goToUrl("http://wecall.qq.com/");//weread://bookDetail?opentype=0&bookId=414048");
/**
load页面之前需要先执行以下的js
eval('window["__QMB_INFO__"]={apis:{"a":1,"b":1},ver:"4.0.5",os:"android"};window["__QMB_INFO_CALL__"]&&window["__QMB_INFO_CALL__"]();');
*/
// window.wereadBridge.moreOperation(new Array({'shareToWechatTimeLine': {'title':'title','imageUrl':'imageUrl','abstract':'abstract','url':'url'}}));
// window.wereadBridge.shareToWechatFriend({'title':'中文','imageUrl':'imageUrl','abstract':'中文测试','url':'url'}, function(){}, function(){});
// window.wereadBridge.shareToWechatTimeline({'title':'中文','imageUrl':'imageUrl','abstract':'中文测试','url':'url'}, function(){}, function(){});
// window.wereadBridge.getAppInfo(function(result){alert('getAppInfo: onSucc:'+JSON.stringify(result));}, function(result){alert('getAppInfo: onFailed:'+JSON.stringify(result));});
// window.wereadBridge.closeBrowser();
// window.wereadBridge.window.wereadBridge.mobileSync(function(error,result) {alert('error:' + error+"\n"+'result:' + result);});;
// window.wereadBridge.window.wereadBridge.refreshToken(function(error,result) {alert('error:' + error+"\n"+'result:' + result);});;
// window.wereadBridge.showBrowserMoreButton({'shareToWechatFriend':0, 'shareToWechatTimeline':1, 'copyLink':0, 'openLinkWithBrowser':0});