| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /**
- * FeHelper动态工具管理器,主要解决新版本向下兼容,为用户按需找回老版本的功能
- * @author zhaoxianlie
- */
- let DynamicTool = (() => {
- // 工具渲染
- let render = (toolName, Awesome) => {
- Awesome.getToolTpl(toolName).then(html => {
- if (!html) {
- if (confirm('检测到当前指定的工具还未安装,这就去设置页面安装工具!')) {
- location.replace('../options/index.html');
- } else {
- window.close();
- }
- return;
- }
- // 生成界面
- document.write(html);
- // 页面滤镜:关掉
- DarkModeMgr.turnLightAuto();
- // 更新静态文件
- let list = document.querySelectorAll('dynamic[data-source]');
- if (!list.length) return;
- let allJs = [];
- let allCss = [];
- for (let i = 0; i < list.length; i++) {
- let elm = list[i];
- let fileType = elm.getAttribute('data-type');
- let sources = elm.getAttribute('data-source') || '';
- let files = sources.split(',').map(source => {
- // 去query处理,获得干净的local key
- if (source.indexOf('?') !== -1) {
- let x = source.split('?');
- x.pop();
- source = x.join('');
- }
- return source;
- });
- if (fileType === 'js') {
- allJs = allJs.concat(files);
- } else {
- allCss = allCss.concat(files);
- }
- }
- Promise.all([Awesome.StorageMgr.get(allCss), Awesome.StorageMgr.get(allJs)]).then(values => {
- document.body.style.display = 'block';
- allCss = allCss.map(f => values[0][f]).join(' ');
- if (allCss.length) {
- let node = document.createElement('style');
- node.textContent = allCss;
- document.head.appendChild(node);
- }
- allJs = allJs.map(f => values[1][f]).join(';');
- allJs.length && window.evalCore.getEvalInstance(window)(allJs);
- });
- });
- };
- // 页面初始化
- let init = () => {
- // 从Query中寻找需要动态渲染的工具名称
- let toolName = new URL(location.href).searchParams.get('tool');
- if (toolName) {
- import('../background/awesome.js').then(dynamicModule => {
- render(toolName, dynamicModule.default);
- });
- } else {
- location.replace('../options/index.html');
- }
- };
- return {init}
- })();
- DynamicTool.init();
|