【开发者自荐】【Chrome/Firefox插件;WebApp】易笺 - txt小说阅读器

贡献一个打包的windows本地应用,基于作者最新1.1版。
https://pan.frank9.com/s/gKue

2 个赞

就是插件本身是没有界面的(插件图标不能点击),而触发插件的条件就是拖拽一个txt文件到浏览器里,或者打开一个以.txt结尾的网址。原本浏览器处理这一类url的方式是直接显示整个txt的内容,而现在会用易笺打开。

感谢大佬!

方正宋刻本秀楷_GBK 看着确实还不错,但是方正字体现在使用好像需要下载客户端了?有其他途径吗?

其实如果能拿到ttf还是可以直接安装的。客户端我也下了,其实还挺好用的哈哈,毕竟几乎所有字体都对个人用户免费,也就不说啥了hhh

大佬您好,因为看小说在手机上更多一点,许愿可以增加H5自适应版本 :grinning:

计划呢是有的,但是估计短时间内希望不大了hhh~ 望多担待

火狐扩展商店已经下载了,很好用。

请问一下这个能跳一下背景颜色吗?大晚上纯白色背景太刺眼了

正在设计dark mode,敬请期待哈

支持深色模式了!

2 个赞

挺好的,请问这个能自定义颜色或者+一个safari类似的颜色背景吗?

根据我拾取的色号,背景是 #4a4a4d

文字是 #b0b0b0

Safari的背景不是透明的吗? :grimacing:

目前暂时还没有计划支持任何自定义,想继续走极简风,keep it simple 哈哈!如果你特别喜欢某种颜色样式,可以改代码,在css/ui_variables.css文件里面。


我说的是阅读器模式,不过,我自己去改就行了,谢谢。

自己冒个泡~ Chrome插件上线啦!!

1 个赞

谢谢大佬持续优化

谢谢大佬!

我根据自己的需求,给正常界面版本“易笺”加了简单的可配置参数功能:字号,行高,字符色,背景色,分页条位置。
尽量不改动源文件,只在 index.html 最后加了一行载入一个新的 js 文件,其他所有代码都在 scripts\ui_settings.js 这个新文件里。
基于我一贯的风格,这是一个够用就行的粗糙/低配/无售后版,所有参数值都是 css 格式。

【PS】 哦,由于我改的是 index.html ,这个应该只针对正常 UI 版本,无界面版本的修改没研究,粗粗看了下,可能是修改对应 manifest.json 文件的 content_scripts"run_at": "document_end" 前面的 "js" : [...],在数组最后加上 "scripts\ui_settings.js",有兴趣的可以试试 :grin:

源码在最后,需要的自取 :wink:

截屏

image

image

修改行高、字号、字符色、背景色、分页条位置

index.html

...
        <script type="text/javascript" src="./scripts/ui.js"></script>
    </body>
    <!-- 只增加以下这行 -->
    <script type="text/javascript" src="./scripts/ui_settings.js"></script>
</html>

scripts\ui_settings.js

let pagination_bottom_default = getCSS("#pagination", "bottom");
let p_lineHeight_default = getCSS(":root", "--p_lineHeight");
let p_fontSize_default = getCSS(":root", "--p_fontSize");
let light_fontColor_default = getCSS(":root", "--fontColor");
let light_bgColor_default = getCSS(":root", "--bgColor");
let dark_fontColor_default = getCSS('[data-theme="dark"]', "--fontColor");
let dark_bgColor_default = getCSS('[data-theme="dark"]', "--bgColor");

let pagination_bottom;
let p_lineHeight;
let p_fontSize;
let light_fontColor;
let light_bgColor;
let dark_fontColor;
let dark_bgColor;

// load settings
function loadSettings() {
	pagination_bottom = localStorage.getItem("pagination_bottom") || pagination_bottom_default;
	p_lineHeight = localStorage.getItem("p_lineHeight") || p_lineHeight_default;
	p_fontSize = localStorage.getItem("p_fontSize") || p_fontSize_default;
	light_fontColor = localStorage.getItem("light_fontColor") || light_fontColor_default;
	light_bgColor = localStorage.getItem("light_bgColor") || light_bgColor_default;
	dark_fontColor = localStorage.getItem("dark_fontColor") || dark_fontColor_default;
	dark_bgColor = localStorage.getItem("dark_bgColor") || dark_bgColor_default;
}

function getCSS(sel, prop) {
	for (const sheet of document.styleSheets) {
		for (const rule of sheet.cssRules) {
			if (rule.selectorText === sel) {
				return rule.style.getPropertyValue(prop);
			}
		}
	}
	return null;
}

function setCSS(sel, prop, val, def) {
	for (const sheet of document.styleSheets) {
		for (const rule of sheet.cssRules) {
			if (rule.selectorText === sel) {
				rule.style.setProperty(prop, val?val:def);
				console.log(sel + " { " + prop + " : " + (val?val:def) + " }");
			}
		}
	}
}

function applySettings() {
	setCSS("#pagination", "bottom", pagination_bottom, pagination_bottom_default);
	setCSS(":root", "--p_lineHeight", p_lineHeight, p_lineHeight_default);
	setCSS(":root", "--p_fontSize", p_fontSize, p_fontSize_default);
	setCSS(":root", "--fontColor", light_fontColor, light_fontColor_default);
	setCSS(":root", "--bgColor", light_bgColor, light_bgColor_default);
	setCSS('[data-theme="dark"]', "--fontColor", dark_fontColor, dark_fontColor_default);
	setCSS('[data-theme="dark"]', "--bgColor", dark_bgColor, dark_bgColor_default);
}

function showSettings() {
	$(`
<div id="settings" style="position:fixed;right:20px;bottom:70px;z-index:1006;background: var(--mainColor);border:1px darkgray solid;border-radius:10px;padding:10px;">
	<div>
		<span style="display:inline-block;width:10rem">行高:</span>
		<input type="text" size="10" id="setting_p_lineHeight" value="${p_lineHeight}" />
	</div>
	<div>
		<span style="display:inline-block;width:10rem">字号:</span>
		<input type="text" size="10"  id="setting_p_fontSize" value="${p_fontSize}" />
	</div>
	<div>
		<span style="display:inline-block;width:10rem">日间字符色:</span>
		<input type="text" size="10"  id="setting_light_fontColor" value="${light_fontColor}" />
	</div>
	<div>
		<span style="display:inline-block;width:10rem">日间背景色:</span>
		<input type="text" size="10"  id="setting_light_bgColor" value="${light_bgColor}" />
	</div>
	<div>
		<span style="display:inline-block;width:10rem">夜间字符色:</span>
		<input type="text" size="10"  id="setting_dark_fontColor" value="${dark_fontColor}" />
	</div>
	<div>
		<span style="display:inline-block;width:10rem">夜间背景色:</span>
		<input type="text" size="10"  id="setting_dark_bgColor" value="${dark_bgColor}" />
	</div>
	<div>
		<span style="display:inline-block;width:10rem">分页条与底部距离:</span>
		<input type="text" size="10"  id="setting_pagination_bottom" value="${pagination_bottom}" />
	</div>
	<div style="padding:4px;">
		<button onclick="removeAllHistory();loadSettings();applySettings();hideSettings();" style="color:red;">清空设置&阅读历史</button>
		<button onclick="saveSettings();">应用</button>
		<button onclick="hideSettings();">取消</button>
	</div>
</div>
`).insertAfter("#switch-btn");
}

function saveSettings() {
	pagination_bottom = $("#setting_pagination_bottom").val() || pagination_bottom_default;
	p_lineHeight = $("#setting_p_lineHeight").val() || p_lineHeight_default;
	p_fontSize = $("#setting_p_fontSize").val() || p_fontSize_default;
	light_fontColor = $("#setting_light_fontColor").val() || light_fontColor_default;
	light_bgColor = $("#setting_light_bgColor").val() || light_bgColor_default;
	dark_fontColor = $("#setting_dark_fontColor").val() || dark_fontColor_default;
	dark_bgColor = $("#setting_dark_bgColor").val() || dark_bgColor_default;
	localStorage.setItem("pagination_bottom", pagination_bottom);
	localStorage.setItem("p_lineHeight", p_lineHeight);
	localStorage.setItem("p_fontSize", p_fontSize);
	localStorage.setItem("light_fontColor", light_fontColor);
	localStorage.setItem("light_bgColor", light_bgColor);
	localStorage.setItem("dark_fontColor", dark_fontColor);
	localStorage.setItem("dark_bgColor", dark_bgColor);
	applySettings();
	hideSettings();
}
function hideSettings() {
	$("#settings").remove();
}

$(`
<div style="position:fixed;bottom:70px;right:20px;width:30px;height:30px;padding:4px;z-index:1005;color:var(--mainColor_focused);cursor:pointer;" onclick="showSettings();">
	<span class="material-symbols-rounded"> settings </span>
</div>
`).insertBefore("#switch");

loadSettings();
applySettings();

3 个赞

请教大佬们:
方正宋刻本秀楷_GBK哪里能下载到啊?
还有哪里有高质量的txt小说下载呢 :joy:

作者您好,由于我平常更喜欢使用utools,所以我fork了您的项目,对utools进行了适配,增加了选中txt文件快速打开的功能,请问我可以把他上架到utools插件市场中吗?会在说明中说明插件来源等信息。修改后的仓库地址:github

2 个赞

太牛了!我争取有时间的时候整合进源代码!感谢分享~