mirror of https://github.com/torappinfo/uweb
update mirrors
parent
b7b4361758
commit
4b66fe2881
@ -0,0 +1,8 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<body>
|
||||
<ul>
|
||||
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,89 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Address bar command line</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Address bar command line
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<h3 id="--or--command-line">":!" ( or "!") command line</h3>
|
||||
<p>Pressing ":" or "!" with hardware keyboard sets focus on the address bar.<br>
|
||||
The command line could be a ".js", ".sh" or other executable with arguments. Ex. ":!s g keyword" could invoke "s.js" executable with the whole string as arguments ("s.sh" or "s" if file exists, here "g" as google search engine); ":! g keyword" would invoke the file ".js" or ".sh" as executable.</p>
|
||||
<p>For regular (non-js) executables, the standard output of the command line could be treated as lines of urls (or html, plain text).</p>
|
||||
<p><a href="i:0h.js:../searchurl/txt/web.js">Install the example file ".js" (supporting search engine bundle)</a><br>
|
||||
<a href="i:0hs.sh:../searchurl/txt/web.sh">Install the example file "s.sh"</a></p>
|
||||
<p>Click the following links to make commands appear in address bar, then press "enter" to execute:<br>
|
||||
<a href="i:15:!cd /data/data/com.termux/files/home;ln -s ../../../info.torapp.uweb/files uweb">Make uweb configuration folder accessible by file managers with termux installed</a><br>
|
||||
(<a href="https://wiki.termux.com/wiki/Internal_and_external_storage">File manager list at end of the page</a>)</p>
|
||||
<h3 id="address-bar-command-modes">Address bar command modes</h3>
|
||||
<p><a href="../cmds/index.html">Commands</a> are the best for repeated execution of an instruction. Address bar command modes provide ways to run different commands in the same category easily.</p>
|
||||
<p>The configure file "default.acmd" has the exactly same format as <a href="../cmds/index.html">default.cmds</a>. Click the following links to install new modes (cold start the app to take effect, then long click the "refresh" button to switch modes):</p>
|
||||
<p><a href="i:0gdefault.acmd::shell:text/plain:%25s%0A">Shell command mode</a></p>
|
||||
<p><a href="i:0gdefault.acmd::bc:text/plain:echo '%25s'|bc -l -q%0A">GNU bc (basic calculator) command mode (need termux for Android 10- )</a></p>
|
||||
<p><a href="i:0gdefault.acmd::plot 2D function:image/svg%2Bxml:gnuplot -e 'set term svg;set
|
||||
output;plot %25s'%0A">GNUPlot plot (2D function), needs uweb adapted termux & gnuplot</a></p>
|
||||
<p><a href="i:0gdefault.acmd::plot 3D function:image/svg%2Bxml:gnuplot -e 'set term svg;set
|
||||
output;splot %25s'%0A">GNUPlot plot (3D function), needs uweb adapted termux & gnuplot</a></p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 18 February 2023<br>
|
||||
use :! instead of shell commandline mode for file manager access<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,111 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>AD blocking</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">AD blocking
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<p><a href="../adblock_domain/index.html">Host blocking</a>。</p>
|
||||
<ul>
|
||||
<li>Use <a href="../bookmarklet/index.html">bookmarklet "list all script urls"</a> to generate url links, long pressing dubious script (usually 3rd-party library) link, click "Block domain root".</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="../sitejs/index.html">Javascript and CSS for domains</a>。</p>
|
||||
<ul>
|
||||
<li>Long press the button "js", click the menu "MarkAD mode". In "markAD mode", click page element to show all attributes and generate CSS AD blocking styles. By default, "display:none" is used. If "display" appears in the attribute information, recommend to use "transform:scale(0)!important" instead.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Long press the tab manager button, check "Videos only" for video sites and "Images only" for image sites. Other AD blocking options are "Hide pseudo elements" and "Hide iframes".</p>
|
||||
<ul>
|
||||
<li>Add prefix "i:0mc32:" to url when bookmarking, then the option "Images only" applies to whole url subtree. Similarly, "c16" for the option "Videos only" and "c12" for hiding both pseudo elements and iframes.</li>
|
||||
<li>Long press the button [☰], check the option "Fullscreen autoplay". Videos are autoplayed in fullscreen mode, ADs have no chance to appear.</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p>Long press the setting button, check the option "Block external scripts". <a href="i:61:../searchurl/func.html">UI</a> website has option to also block dubious 3rd party resources. <a href="file:///data/data/info.torapp.uweb/files/js.allow">js.allow</a> whitelists js libraries.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Long press the button [☰], "Disable floating ADs", "Disable banners", "clear all timers", "stop events" and "Sleep ..." are also available.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Click the button with image icon to hide all images.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>Click the button "JS" to disable javascript.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="file:///data/data/info.torapp.uweb/files/url.deny">url.deny</a>: one giant regular expression for blocked urls (java grammar), in which carriage returns (CR or newline) are ignored and "#" is for comments.</p>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 20 February 2023<br>
|
||||
use relative path<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,117 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Hosts files</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Hosts files
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
<li><a href="../tags/adblock/index.html#">adblock</a> </li>
|
||||
|
||||
</ul>
|
||||
<p>The enhanced hosts files "hosts" and "default.hosts" take effect with the setting option "use hosts".</p>
|
||||
<h4 id="hosts">hosts</h4>
|
||||
<p>The <span style="color:red">enhanced</span> file <a href="file:///data/data/info.torapp.uweb/files/hosts">"hosts"</a> defines IP addresses/attributes for domains. Each line has the following format:<br>
|
||||
[[IP address][attributes]][single space][domain name]</p>
|
||||
<p>where "[[IP address][attributes]]" could be:</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>ipv4 address such as:<br>
|
||||
172.67.157.211 torapp.eu.org</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>ipv6 address, Ex.:<br>
|
||||
[2606:4700:3037::6815:8c3] torapp.eu.org</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>empty, that would lift all server-imposed limitations. Ex.:<br>
|
||||
[single space]gitee.com</p>
|
||||
<p>which will make all git repositories on the domain visitable as websites with raw file access url.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>response headers, separeded by ';', Ex.:<br>
|
||||
Access-Control-Allow-Origin;https://www.bing.com;Access-Control-Allow-Credentials;true mybing.xn--xyza.top</p>
|
||||
<p>which makes "mybing2.xn--xyza.top" to accept CORS requests with cookies.</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>IP address and response headers, separeded by ';', Ex.:<br>
|
||||
104.21.8.195;Access-Control-Allow-Origin;https://www.bing.com;Access-Control-Allow-Credentials;true uweb.torapp.eu.org</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>IP address, real domain name and response headers (Experimental), separeded by ';', Ex.:<br>
|
||||
104.21.8.195;www.bing.com uweb.torapp.eu.org</p>
|
||||
<p>which indicates the domain "uweb.torapp.eu.org" is just a proxy of "www.bing.com", and as such, the cookies of "www.bing.com" would be used for "uweb.torapp.eu.org".</p>
|
||||
<p>To make life easier, use lower-case domain name (the first letter should not be a digital) and capitalize the first letter of response header names.</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="defaulthosts">default.hosts</h4>
|
||||
<p><a href="file:///data/data/info.torapp.uweb/files/default.hosts">"default.hosts"</a> blocks whole domain trees including all descendant domains. The domains in the hosts file must be 2 or 3 segment domains, such as "yahoo.com" and "finance.yahoo.com". If the length of the last 2 segments is less than 7, such as "com.pl", then it is treated as one segment, so domains like "xxx.xxx.com.pl" are also valid in the hosts file.</p>
|
||||
<p>Each line of the hosts file has the following format:<br>
|
||||
[rootDomain][space][regex for domain prefix before rootDomain][space][regex for the whole url without "http(s)://"]<br>
|
||||
The first part [rootDomain] is required and the others are optional. regex is java-grammar regular expression. If the second regex is used, it is recommended to merge the first regex to the second one for performance.</p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 13 May 2023<br>
|
||||
update bingAI/js/optionsSets.js<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,116 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Bookmarks</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Bookmarks
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<p>AI, chatgpt etc.</p>
|
||||
<ul>
|
||||
<li><a href="https://gemini.google.com/app">google gemini</a></li>
|
||||
<li><a href="https://komo.ai">komo</a></li>
|
||||
<li><a href="https://andisearch.com">andi</a></li>
|
||||
<li><a href="https://devv.ai">devv.ai</a></li>
|
||||
<li><a href="https://poe.com">poe</a></li>
|
||||
<li><a href="https://freegpt.cc">freegpt</a></li>
|
||||
<li><a href="https://www.teach-anything.com/">teach-anything</a></li>
|
||||
<li><a href="https://magickpen.com/">magickpen</a></li>
|
||||
</ul>
|
||||
<p><a href="i:1w">Wait for url from other devices</a><br>
|
||||
<a href="https://berify.com">berify: reverse image search for video</a></p>
|
||||
<h3 id="tips">Tips</h3>
|
||||
<h4 id="file-handling-and-styling-with-homecss">File handling and styling with home.css</h4>
|
||||
<p>"home.css" (in current folder, parent folder or the "bookmark" folder) styles bookmarks, search engines and the folder itself. The file is in html format instead of CSS, so it needs "<style>" tag for CSS.</p>
|
||||
<p><a href="i:0hbookmark/home.css:../searchurl/txt/markdeep.html">Install markdeep styling for markdown files</a></p>
|
||||
<h3 id="bookmarks-with-secrets-post-instead-of-get">Bookmarks with secrets (POST instead of GET)</h3>
|
||||
<p>The <a href="../links/index.html">internal link</a> "i:a1[url]?[post data]" sends http "POST" request to server.</p>
|
||||
<h3 id="commands">Commands</h3>
|
||||
<p>Clicking to run is only allowed from local pages for bookmarks in this section. Users need to either save the bookmarks to local or long press the link => "open in new tab" to execute.</p>
|
||||
<p>To save the bookmarks to local, users firstly need to install "bookmark" menu by clicking corresponding link in the <a href="../urls/index.html">url services</a> page, then long press the bookmark link => "open in new tab" => "Commands" => "bookmark" to save the bookmark.</p>
|
||||
<p><a href="d::mkdir -p /sdcard/Download/uweb;cd /data/data/info.torapp.uweb;cp -r files /sdcard/Download/uweb;rm -rf files;ln -s /sdcard/Download/uweb files:">symbolic link configuration folder to "/sdcard/Download/uweb"</a></p>
|
||||
<p><a href="d::cd /data/data/com.termux/files/home;ln -s ../../../info.torapp.uweb/files uweb:">Make uweb configuration folder accessible by file managers with termux installed</a><br>
|
||||
(<a href="https://wiki.termux.com/wiki/Internal_and_external_storage">File manager list at end of the page</a>)</p>
|
||||
<p><a href="d::cd /sdcard/Download/mdict;for i in *.mdx; do b=`basename ${i} .mdx`;fs=%22${i}%22;if [ -f ${b}.mdd ];then fs=${fs}%22,${b}.mdd%22;fi;echo ${b}:i:5ifile:///sdcard/Download/mdict/${fs}?app=https://cdn.jsdelivr.net/gh/torappinfo/uweb/en/searchurl/mdict/mdict.html#word=%25s >>/data/data/info.torapp.uweb/files/home5.search;done:">Scan mdx/mdd files under the folder "/sdcard/Download/mdict" and add search engines</a>.</p>
|
||||
<h4 id="termux">Termux</h4>
|
||||
<p>The following bookmarks need termux.<br>
|
||||
<a href="c:bc -l">GNU bc (basic calculator)</a><br>
|
||||
<a href="c:bc -l *.bc">bc with all extensions</a></p>
|
||||
<h3 id="templates">Templates</h3>
|
||||
<p>Click following links to install bookmark templates, bookmarks saved to the template have corresponding features enabled.<br>
|
||||
<a href="i:0hbookmark/novel.html:../../zh/searchurl/bookmark/novel.html">"novel.html": auto reader's mode</a></p>
|
||||
<h3 id="science">Science</h3>
|
||||
<h4 id="physics">Physics</h4>
|
||||
<p><a href="https://www.feynmanlectures.caltech.edu/">Feynman lectures</a><br>
|
||||
<a href="https://webspace.science.uu.nl/~gadda001/goodtheorist/index.html">goodtheorist</a></p>
|
||||
<h4 id="chemistry">Chemistry</h4>
|
||||
<p><a href="https://www.chemspider.com">chemspider</a><br>
|
||||
<a href="http://bl.ocks.org/chemplexity/raw/180e960a6d9e68adf28429dd16f05fa0/">molecule SMILES</a><br>
|
||||
<a href="http://cdb.ics.uci.edu/cgibin/Smi2DepictWeb.py">SMILES2structure</a></p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 6 March 2024<br>
|
||||
add deno url<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,97 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Bookmarklets</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Bookmarklets
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
<li><a href="../tags/javascript/index.html#">javascript</a> </li>
|
||||
|
||||
</ul>
|
||||
<p>With a href="../index.html">uweb browser</a>, long pressing any bookmarklet link, click "Open in new tab", the bookmarklet will be run on the last other tab.</p>
|
||||
<p><a href="javascript:{let es=document.getElementsByTagName('script');let urls='';for(let i=0;i<es.length;i++){if(es[i].src)urls+=es[i].src+'<br>';}let w=window.open(''),s=w.document;s.write(urls);s.close();w.location.href='i:631:';}">List all script urls</a></p>
|
||||
<p><a target="_self" href="javascript:alert(navigator.userAgent)">User agent</a><br>
|
||||
<a href="javascript:(function(){var w=window.open(''),s=w.document;s.write('<html><body></body></html>');s.close();var pre=s.body.appendChild(s.createElement('pre'));pre.style.overflow='auto';pre.style.whiteSpace='pre-wrap';pre.appendChild(s.createTextNode(document.cookie))})()">Cookie</a><br>
|
||||
<a href="javascript:(function(){var w=window.open(''),s=w.document;s.write('<html><body></body></html>');s.close();var pre=s.body.appendChild(s.createElement('pre'));pre.style.overflow='auto';pre.style.whiteSpace='pre-wrap';pre.appendChild(s.createTextNode(document.documentElement.innerHTML))})()">Source code</a><br>
|
||||
<a href="javascript:function%20gett(w){try{var%20lm=new%20Date(w.document.lastModified);if(lm>maxd)maxd=lm;for(var%20i=0;F=w.frames[i];i++){gett(F);}}catch(e){}}var%20now=new%20Date();var%20maxd=new%20Date(document.lastModified);gett(window);if(maxd.getTime()==0||now.toUTCString()==maxd.toUTCString()){alert('Page%20is%20dynamically%20generated,%20cannot%20determine%20date.');}else{alert('Page%20was%20last%20modified%20'+maxd.toLocaleString());}" class="bookmarklet" rel="nofollow">Last modified date</a></p>
|
||||
<p><a href="javascript:(function(){var script=document.createElement('script');script.src='//fastly.jsdelivr.net/npm/eruda';document.body.appendChild(script);script.onload=function(){eruda.init()}})()">Eruda: mobile console</a><br>
|
||||
<a href="javascript:window.open('https://api.qrserver.com/v1/create-qr-code/?size=150x150&data='%20+%20decodeURIComponent(location.href));void(0);">QR code generation</a></p>
|
||||
<p><a href="javascript:(function(){var x,i; x = document.forms; for (i = 0; i < x.length; ++i) x[i].method="get"; alert("Changed " + x.length + " forms to use the GET method. After submitting a form from this page, you should be able to bookmark the result."); })();">Use "GET" method for "POST"</a><br>
|
||||
<a href="javascript:(function(){var i,f,j,e,div,label,ne; for(i=0;f=document.forms[i];++i)for(j=0;e=f[j];++j)if(e.type=="hidden"){ D=document; function C(t){return D.createElement(t);} function A(a,b){a.appendChild(b);} div=C("div"); label=C("label"); A(div, label); A(label, D.createTextNode(e.name + ": ")); e.parentNode.insertBefore(div, e); e.parentNode.removeChild(e); ne=C("input");/*for ie*/ ne.type="text"; ne.value=e.value; A(label, ne); --j;}})()">Shows all form elements</a><br>
|
||||
<a href="javascript:(function(){var x,k,f,j;x=document.forms;for (k=0;k<x.length;++k){f=x[k];for(j=0;j<f.length;++j){f[j].disabled=false; f[j].readOnly=false;}}})()">Enables all form elements</a></p>
|
||||
<p><a href="javascript:(function(){function toggle(box){temp=box.onchange;box.onchange=null;box.checked=!box.checked;box.onchange=temp;}var f=document.querySelectorAll(%22input[type='checkbox']%22);var j;for(j=0;j<f.length;++j)toggle(f[j]);})()">Toggle checkboxes</a><br>
|
||||
<a href="javascript:(function(){function set(box,bChecked){temp=box.onchange;box.onchange=null;box.checked=bChecked;box.onchange=temp;}var f=document.querySelectorAll(%22input[type='checkbox']%22);var j;for(j=0;j<f.length;++j)set(f[j],true);})()">Check all checkboxes</a><br>
|
||||
<a href="javascript:(function(){function set(box,bChecked){temp=box.onchange;box.onchange=null;box.checked=bChecked;box.onchange=temp;}var f=document.querySelectorAll(%22input[type='checkbox']%22);var j;for(j=0;j<f.length;++j)set(f[j],false);})()">Uncheck all checkboxes</a><br>
|
||||
<a href="javascript:(function(){ function toggle(box){ temp=box.onchange; box.onchange=null; box.checked=!box.checked; box.onchange=temp; } var x,k,f,j; x=document.forms; for (k=0; k<x.length; ++k) { f=x[k]; for (j=0;j<f.length;++j) if (f[j].type.toLowerCase() == "checkbox") toggle(f[j]); } })();">Toggle all checkboxes in forms</a><br>
|
||||
<a href="javascript:(function(){var%20doc=document;var%20bd=doc.body;bd.onselectstart=bd.oncopy=bd.onpaste=bd.onkeydown=bd.oncontextmenu=bd.onmousemove=bd.onselectstart=bd.ondragstart=doc.onselectstart=doc.oncopy=doc.onpaste=doc.onkeydown=doc.oncontextmenu=null;doc.onselectstart=doc.oncontextmenu=doc.onmousedown=doc.onkeydown=null;void(0)})()">Enable selection</a><br>
|
||||
<a href="javascript:(function() { function R(a){ona = "on"+a; if(window.addEventListener) window.addEventListener(a, function (e) { for(var n=e.originalTarget; n; n=n.parentNode) n[ona]=null; }, true); window[ona]=null; document[ona]=null; if(document.body) document.body[ona]=null; } R("contextmenu"); R("click"); R("mousedown"); R("mouseup"); })()">Restore context menu</a><br>
|
||||
<a href="javascript:(function(){var count=0, text, regexp;text=prompt("Search regexp:", "");if(text==null || text.length==0)return;try{regexp=new RegExp("(" + text +")", "i");}catch(er){alert("Unable to create regular expression using text '"+text+"'.\n\n"+er);return;}function searchWithinNode(node, re){var pos, skip, spannode, middlebit, endbit, middleclone;skip=0;if( node.nodeType==3 ){pos=node.data.search(re);if(pos>=0){spannode=document.createElement("SPAN");spannode.style.backgroundColor="yellow";middlebit=node.splitText(pos);endbit=middlebit.splitText(RegExp.$1.length);middleclone=middlebit.cloneNode(true);spannode.appendChild(middleclone);middlebit.parentNode.replaceChild(spannode,middlebit);++count;skip=1;}}else if( node.nodeType==1 && node.childNodes && node.tagName.toUpperCase()!="SCRIPT" && node.tagName.toUpperCase!="STYLE"){for (var child=0; child < node.childNodes.length; ++child){child=child+searchWithinNode(node.childNodes[child], re);}}return skip;}window.status="Searching for "+regexp+"...";searchWithinNode(document.body, regexp);window.status="Found "+count+" match"+(count==1?"":"es")+" for "+regexp+".";})();">Search with regex</a><br>
|
||||
<a href="javascript:function toArray (c){var a, k;a=new Array;for (k=0; k<c.length; ++k)a[k]=c[k];return a;}function insAtTop(par,child){if(par.childNodes.length) par.insertBefore(child, par.childNodes[0]);else par.appendChild(child);}function countCols(tab){var nCols, i;nCols=0;for(i=0;i<tab.rows.length;++i)if(tab.rows[i].cells.length>nCols)nCols=tab.rows[i].cells.length;return nCols;}function makeHeaderLink(tableNo, colNo, ord){var link;link=document.createElement('a');link.href='javascript:sortTable('+tableNo+','+colNo+','+ord+');';link.appendChild(document.createTextNode((ord>0)?'a':'d'));return link;}function makeHeader(tableNo,nCols){var header, headerCell, i;header=document.createElement('tr');for(i=0;i<nCols;++i){headerCell=document.createElement('td');headerCell.appendChild(makeHeaderLink(tableNo,i,1));headerCell.appendChild(document.createTextNode('/'));headerCell.appendChild(makeHeaderLink(tableNo,i,-1));header.appendChild(headerCell);}return header;}g_tables=toArray(document.getElementsByTagName('table'));if(!g_tables.length) alert("This page doesn't contain any tables.");(function(){var j, thead;for(j=0;j<g_tables.length;++j){thead=g_tables[j].createTHead();insAtTop(thead, makeHeader(j,countCols(g_tables[j])))}}) ();function compareRows(a,b){if(a.sortKey==b.sortKey)return 0;return (a.sortKey < b.sortKey) ? g_order : -g_order;}function sortTable(tableNo, colNo, ord){var table, rows, nR, bs, i, j, temp;g_order=ord;g_colNo=colNo;table=g_tables[tableNo];rows=new Array();nR=0;bs=table.tBodies;for(i=0; i<bs.length; ++i)for(j=0; j<bs[i].rows.length; ++j){rows[nR]=bs[i].rows[j];temp=rows[nR].cells[g_colNo];if(temp) rows[nR].sortKey=temp.innerHTML;else rows[nR].sortKey="";++nR;}rows.sort(compareRows);for (i=0; i < rows.length; ++i)insAtTop(table.tBodies[0], rows[i]);}">Table re-order</a></p>
|
||||
<p><a href="javascript: (function() { var url = ('http://www.bugmenot.com/view/' + escape(location.hostname)); w = open(url, 'w', 'location=no,status=yes,menubar=no,scrollbars=yes,resizable=yes,width=500,height=400,modal=yes,dependent=yes'); if (w) { setTimeout('w.focus()', 1000) } else { location = url } })();">BugMeNot</a></p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 24 September 2022<br>
|
||||
add adblock.md<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,8 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<body>
|
||||
<ul>
|
||||
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,115 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Downloads</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Downloads
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<p><a href="https://www.amazon.com/TorApp-Info-uweb-browser-for-geeks/dp/B098QPR6N5">Amazon appstore</a></p>
|
||||
<p><a href="https://galaxy.store/uweb">Galaxy.Store</a></p>
|
||||
<p><a href="https://s1.asytech.cn/s/tQrgT5kBRg8Trry">uweb, termux & history versions</a></p>
|
||||
<p><a href="https://github.com/torappinfo/uweb/releases/tag/v1">github</a></p>
|
||||
<p><a href="https://sourceforge.net/projects/uwebbrowser/files/v1/">sourceforge</a></p>
|
||||
<p><a href="https://my.powerfolder.com/getlink/fi61cC6VHjK72tfufmnLAz/">powerfolder</a></p>
|
||||
<p><a href="https://www.udrop.com/folder/08ba413230f465ca0901bef68e857c0b/uweb">udrop</a></p>
|
||||
<p><a href="https://releases.pagure.org/uwebapk/">pagure</a></p>
|
||||
<p><a href="http://pan.mcbebbs.cn/s/dJ4t8">mcbebbs</a></p>
|
||||
<h4 id="main-featuresreadmeindexhtml"><a href="../readme/index.html">Main features</a></h4>
|
||||
<h4 id="change-logs">Change logs</h4>
|
||||
<p>1038: support chatBot as search engine with url "i:0/js/hash2textarea.js:https://XXX"<br>
|
||||
1036: TV mode: reuse "engine.search" as live TV channel urls.<br>
|
||||
1034: click share button on homescreen to process clipboard text.<br>
|
||||
1030: Allow downloading with global redirection<br>
|
||||
1026: Test automation: enable i:0 urls in scripting mode<br>
|
||||
1017: crontab alarm clock and <a href="../links/index.html">links</a> as sixth field.<br>
|
||||
1008: Add long screenshot mode<br>
|
||||
1006: Advanced configuration: auto reload, download path<br>
|
||||
1004: bookmarklet "Show as html" to support clipboard sites such as "netcut.cn".<br>
|
||||
998: <a href="../rjs/index.html">Bookmarklets</a> to support CSP sites.<br>
|
||||
991: <a href="../redirect/index.html">global url redirection</a> support.<br>
|
||||
988: <a href="../adblock_domain/index.html">hosts</a> file to support response headers.<br>
|
||||
985: <a href="../links/index.html">Special urls</a> to support shortcut keys such as ctrl-a to ctrl-z.<br>
|
||||
983: support <a href="../adblock_domain/index.html">"hosts"</a> file domain name resolving (no root needed), only single space allowed as separator for ip address and domain name.<br>
|
||||
975: <a href="../bookmark/index.html">Bookmarks</a> to support styling for markdown etc.<br>
|
||||
971: <a href="../links/index.html">multiple type profiles</a>: switch any data including website logins, user configurations orthogonally.<br>
|
||||
964: site source html preprocessing before rendering with user <a href="../sitejs/index.html">site extra html</a>.<br>
|
||||
961: webdav/http file upload support with <a href="../links/index.html">"i:0u" links</a>.<br>
|
||||
955: Address bar: <a href="../acmd/index.html">":!" or "!"</a> for command line support (.js/.sh files as executables).<br>
|
||||
949: Address bar: ":p [width in milliInch]x[height]" to generate PDF in custom size<br>
|
||||
946: Option "use offline cache" to support serverless local websites.</p>
|
||||
<p>945: commands to support evaluation of generated js code.</p>
|
||||
<p>943: Multiple home screens support .mht (offline webpage), .search & .html local files.</p>
|
||||
<p>940: <a href="../url2site/index.html">Any urls as website</a> with local html processing (<a href="../links/index.html">"i:0m/..../xxx.html:url"</a>)</p>
|
||||
<p>935:</p>
|
||||
<ul>
|
||||
<li>Pipe support: command line output to uweb tabs.</li>
|
||||
</ul>
|
||||
<p>934:</p>
|
||||
<ul>
|
||||
<li>Serverless local sites: PWA-kind web extension (chrome .crx & firefox .xpi) support.</li>
|
||||
<li>PWAs and web extensions to be used as search engines, ex. kiwix zim as search engines.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 21 March 2024<br>
|
||||
fix README<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,104 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Custom file handling</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Custom file handling
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
<li><a href="../tags/termux/index.html#">termux</a> </li>
|
||||
|
||||
<li><a href="../tags/curl/index.html#">curl</a> </li>
|
||||
|
||||
</ul>
|
||||
<p>Long press the settings button, check the option "custom file handling" to enable the functionality.</p>
|
||||
<p>The custom file handling configuration file is "default.filecap", each line of it has the format as follows:<br>
|
||||
[file extension]:[mimetype]:[command line]</p>
|
||||
<p>The "[file extension]" part can have at most two-segment of extensions such as "txt.xz","html.gz".<br>
|
||||
"[mimetype]" indicates the type of "[command line]" output.<br>
|
||||
"[command line]" is same as the one in <a href="../cmds/index.html">default.cmds</a>. The most often used replacements are:<br>
|
||||
%u (url), %U (urlencoded url), %c (cookie), %p (site password, curl format).</p>
|
||||
<p>default.filecap example:</p>
|
||||
<pre><code>txt:text/html:curl %p "%u"
|
||||
mp3:text/html:echo '<audio controls width=100% height=100%><source src="%u"></audio>'
|
||||
m4b:text/html:echo '<audio controls width=100% height=100%><source src="%u"></audio>'
|
||||
m3u8:text/html:echo '<video controls width=100% height=100%><source src="%u"></video>'
|
||||
mp4:text/html:echo '<video controls width=100% height=100%><source src="%u"></video>'
|
||||
mkv:text/html:echo '<video controls width=100% height=100%><source src="%u"></video>'
|
||||
doc:uweb:echo http://docs.google.com/gview?embedded=true&url=%U
|
||||
xls:uweb:echo http://docs.google.com/gview?embedded=true&url=%U
|
||||
ppt:uweb:echo http://docs.google.com/gview?embedded=true&url=%U
|
||||
docx:uweb:echo http://docs.google.com/gview?embedded=true&url=%U
|
||||
xlsx:uweb:echo http://docs.google.com/gview?embedded=true&url=%U
|
||||
pptx:uweb:echo http://docs.google.com/gview?embedded=true&url=%U
|
||||
xz:text/plain:curl %p "%u"|xz -d --</code></pre>
|
||||
<p>Examples for <a href="../html5/index.html">html5 application</a>:</p>
|
||||
<pre><code>pdf:uweb:echo file:///data/data/info.torapp.uweb/files/app/pdf.js/web/viewer.html?file=%u
|
||||
djvu:uweb:echo file:///data/data/info.torapp.uweb/files/app/djvu.html?url=%u
|
||||
epub:uweb:echo file:///data/data/info.torapp.uweb/files/app/reader/index.html?bookPath==%u</code></pre>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 24 September 2022<br>
|
||||
fix typos from torinfo.uweb to torapp.uweb<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,91 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Gestures</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Gestures
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<p>Swipe down from the top to show the address bar; swipe up to the top to hide the address bar. Swipe down to the bottom to hide the toolbar with option "swipe to hide tools"; swipe on the bottom corners to show the toolbar.</p>
|
||||
<p>Swipe left/right near the toolbar to switch window; fling left/right to switch to the last/first window.</p>
|
||||
<p>Swiping on the top part of content window (near the top address bar by default) triggers corresponding link in the file "default.gesture", which has the same format as <a href="../links/index.html">default.link</a>.</p>
|
||||
<p>The algorithm to match swiping gesture to a line in the file "default.gesture" is as follows:</p>
|
||||
<ul>
|
||||
<li>Divide the screen width to three parts evenly, assign each part with a number 0, 1, 2 respectively.</li>
|
||||
<li>Assume "s" and "e" are the above defined numbers for the gesture start point and end point. Let "linenumber = 3*s+e" , if it is equal to 4 and the gesture's first direction is left, then change it to be 9.</li>
|
||||
<li>For turning back and forth, add "10" each time.</li>
|
||||
</ul>
|
||||
<p>The final line number will match the corresponding line in "default.gesture", 0 to the first line, ...</p>
|
||||
<p>"default.gesture2" is for the right side gesturs and the algorithm is similar to "default.gesture".</p>
|
||||
<p>Example links:<br>
|
||||
Toggle fullscreen::0003<br>
|
||||
back:javascript:history.back()<br>
|
||||
forward:javascript:history.forward()<br>
|
||||
back2:javascript:history.go(-2)</p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 24 September 2022<br>
|
||||
add en gesture.md<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,82 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>CSS styles</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">CSS styles
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<p><a href="../en/">Uweb browser</a> loads all ".css" files under the folder "css" as global css. Click the following links to install global css files:</p>
|
||||
<p><a href="i:0hcss/clearfont.css:../../zh/searchurl/txt/clearfont.css">Clearing font settings</a></p>
|
||||
<p>The file "night.css" is used as night mode, click the following links to install one:<br>
|
||||
<a href="i:0hnight.css:../../zh/searchurl/txt/night.css">webview 81+ night mode</a><br>
|
||||
<a href="i:0hnight.css:../../zh/searchurl/txt/night_old.css">webview 80- night mode</a></p>
|
||||
<h4 id="earliest-loaded-global-js">Earliest loaded global js</h4>
|
||||
<p>The ".js" files under the folder "css" are loaded as earlier as possible on the page.</p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 20 April 2023<br>
|
||||
support .js files under 'css' folder<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,79 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Toolbar customization</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Toolbar customization
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<p>If subfolder "icon" exists, then files named as "0","1","2"...<br>
|
||||
are used for icons in the bottom toolbar. file "0" to replace the left arrow button, "1" for right arrow button, "2" for the setting button,"3" for the home screen button,...</p>
|
||||
<p>If a new button is defined (file name "20" exists), uweb also supports VectorDrawable with "android compiled XML" format. All icon files must be either all compiled VectorDrawables or common image formats.</p>
|
||||
<p>Note: The refresh and tab manager button can not be redefined.</p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 1 November 2022<br>
|
||||
add flg for not following sys night mode<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,88 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Long pressed link menu</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Long pressed link menu
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
<li><a href="../tags/javascript/index.html#">javascript</a> </li>
|
||||
|
||||
</ul>
|
||||
<h4 id="to-run-commands">To run commands</h4>
|
||||
<p>Each line of file "<a href="file:///data/data/info.torapp.uweb/files/default.longclick">default.longclick</a>" has the following format: (same as <a href="../cmds/index.html">default.cmds</a>)<br>
|
||||
[Name]:[mimetype]:[command line]<br>
|
||||
in which [command line] can have <a href="../cmds/index.html">"%c" (cookie), "%u" (current url), "%t" (title)</a> etc.</p>
|
||||
<h4 id="to-visit-url-and-load-javascript-file">To visit url and load javascript file</h4>
|
||||
<p>All ".js" files under the folder "<a href="file:///data/data/info.torapp.uweb/files/longclick/">longclick</a>" are part of the popup menu.<br>
|
||||
These javascript files are in the following format:</p>
|
||||
<ul>
|
||||
<li>The very first line can begin with "//" followed by website url that can have <a href="../cmds/index.html">"%u" (current url), "%t" (title)</a> etc. included. In this case, the website is visited, then the javascript file is loaded on the new loaded site.</li>
|
||||
<li>In the ".js" file, variable "arguments" can be used to get parameters. in which arguments[1] is the long-pressed link url, argument[2] is the text description and arguments[0] is the ".js" file name.</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 24 September 2022<br>
|
||||
fix typos from torinfo.uweb to torapp.uweb<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,92 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Offline resources</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Offline resources
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<p>Offline resources locate in the folder "sitecache". With the option "use offline resources" enabled, the corresponding files in "sitecache/[domain name]/[full path including filename, the url path part]" are loaded first before reaching the network.</p>
|
||||
<h4 id="bingchat-ui">bingChat UI</h4>
|
||||
<p><a href="i:0hsitecache/www.bing.com/ai.html:../searchurl/bingAI/bing.html">Install bingChat UI ai.html for censored area</a> (<a href="https://www.bing.com/ai.html">bingChat UI</a>)</p>
|
||||
<p><a href="i:0hsitecache/www.bing.com/write.html:../searchurl/bingAI/write.html">Install bingWrite UI write.html for censored area</a> (<a href="https://www.bing.com/write.html">bingWrite</a>)</p>
|
||||
<p><a href="i:0hsitecache/www.bing.com/draw.html:../searchurl/bingAI/draw.html">Install bingAI image creator UI draw.html for censored area</a> (<a href="https://www.bing.com/draw.html">bingAI image creator</a>)</p>
|
||||
<h4 id="serverless-local-sites">Serverless local sites</h4>
|
||||
<p><a href="i:01Extract webapp:i:0bsitecache/local/:">Click to install url service that extracts web apps to the folder "sitecache/local/"</a>: support web extensions (.crx for chrome & .xpi for firefox).</p>
|
||||
<p>Any folder under "sitecache" can be visited as a local site. Urls with search queries can be dynamically processed by the js/wasm code in the local file.</p>
|
||||
<p>PWAs (Progresssive Web Applications) and some web extensions (.crx for chrome & .xpi for firefox) are just packaged websites. Ex. the "kiwix" extension can be extracted to the folder "sitecache/local/kiwix"<sup id="fnref:1"><a href="#fn:1" class="footnote-ref" role="doc-noteref">1</a></sup>, then the kiwix extension can be accessed via url "https://local/kiwix/www/index.html" in the browser.</p>
|
||||
<div class="footnotes" role="doc-endnotes">
|
||||
<hr>
|
||||
<ol>
|
||||
<li id="fn:1">
|
||||
<p>the folder name "local" is used as the domain name in the url. <a href="#fnref:1" class="footnote-backref" role="doc-backlink">↩︎</a></p>
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 9 May 2023<br>
|
||||
fix bingAI draw<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,125 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title></title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<h3 id="uweb-browser-unlimited-power">Uweb browser: unlimited power</h3>
|
||||
<p><a href="README.zh-Hans.md" onclick="{let u=location.href; if(u.endsWith('index.html')||u.endsWith('readme/')){location='../../zh/readme/index.html';return false;}}">中文</a></p>
|
||||
<p><a href="https://www.amazon.com/TorApp-Info-uweb-browser-for-geeks/dp/B098QPR6N5">Amazon appstore</a><br>
|
||||
<a href="https://galaxy.store/uweb">Galaxy.Store</a><br>
|
||||
<a href="en/download.md" onclick="{let u=location.href; if(u.endsWith('index.html')||u.endsWith('readme/')){location='../../en/changelog/index.html';return false;}}">Downloads</a></p>
|
||||
<p><a href="https://torappinfo.github.io/uweb/en/">Uweb browser: downloads, plugins and tips</a><br>
|
||||
(Mirrors: <a href="https://jamesfengcao.gitlab.io/uweb/en/">gitlab</a> <a href="https://jamesfengcao.codeberg.page/en/">codeberg</a> <a href="https://repo.or.cz/uweb.git/blob_plain/HEAD:/en/index.html">repo</a> <a href="https://uweb.4everland.app/en/">4everland</a> <a href="https://ik4ev-laaaa-aaaad-qd4sq-cai.ic.fleek.co/en/">fleek</a> <a href="https://uwebzh.netlify.app/en/">netlify</a> <a href="https://uweb.surge.sh/en/">surge</a> <a href="https://uwebbrowser-t27o4.kinsta.page">kinsta</a> <a href="https://torappinfo.bitbucket.io/en/">bitbucket</a> <a href="https://muweb.pages.dev/en/">pages</a> <a href="https://uweb.vercel.app/en/">vercel</a> <a href="https://uweb.onrender.com/en/">render</a><br>
|
||||
<a href="en/mirrors.md" onclick="{let u=location.href; if(u.endsWith('index.html')||u.endsWith('readme/')){location='../../assets/help_en.html#mirrors';return false;}}">More...</a>)</p>
|
||||
<ul>
|
||||
<li>Powerful: any native functionality with html5 enhancement and still secure; any urls to host website; javascript and shell scripting for general processing; piping between console and GUI and more with Termux.</li>
|
||||
<li>Customizable: user-defined menus, (new) buttons and gestures for user agents, bookmarklets, url services, shell commands, internal functionality links and text processing etc.</li>
|
||||
<li>Convenient: Any AI chatbot/book (pdf/djvu)/dictionary (mdict)/txt/command line/app/webapp (web extensions) can be search engine.</li>
|
||||
<li>Tiny: less than 250k.</li>
|
||||
<li>Fast: run fast, even with thousands of user provided css/scripts/htmls.</li>
|
||||
<li>Efficient: less touches, one click to reach any number of search engines without repeated input; automate online services.</li>
|
||||
<li>URL bar command line support ("!" and .js file as command).</li>
|
||||
<li>Site-specific JS/CSS/HTML/preprocessing.</li>
|
||||
<li>Online play/preview/preprocess for downloadable resources.</li>
|
||||
<li>Multiple type profiles: switch any data including website logins, user configurations orthogonally.</li>
|
||||
<li>Supports enhanced user "hosts" file. Empty IP address to lift all server-imposed limitations.</li>
|
||||
<li>Website test automation scripting. crontab support (alarm clock and more).</li>
|
||||
</ul>
|
||||
<h4 id="main-features">Main features</h4>
|
||||
<p>Custom paper size PDF export and long vector screenshot, TTS, text reflow, resource sniffer, translation, reader's mode, user-defined url redirection, webdav/http backup & restore, auto next page, sending/receiving msg/file(s), site config (UA, no JS, no image, no 3rd party script/resource,active script, global scripts), http(s)/socks proxy, enabling html5 apps for local files (pdf/djvu/epub viewer, mdict dictionary lookup etc.).</p>
|
||||
<ul>
|
||||
<li>User-defined global and site-specific CSS and javascript.</li>
|
||||
<li>Bookmarklets (works for CSP sites and with option to auto apply to similar sites)</li>
|
||||
<li>AD blocking (block whole root domain trees etc.)</li>
|
||||
<li>Customization (define extra menus/buttons/gestures with user-defined functionalities)</li>
|
||||
<li>Support shell scripts, javascript for general processing, other languages (python etc.) are also supported by installing uweb compatible Termux versions.</li>
|
||||
<li>Serverless local sites: PWA-kind web extension (chrome .crx & firefox .xpi) support.</li>
|
||||
<li>Piping between console and uweb tabs.</li>
|
||||
<li>Resizable floating video support.</li>
|
||||
</ul>
|
||||
<h4 id="screenshots">Screenshots</h4>
|
||||
<p><img src="https://i.postimg.cc/rsL9G5N1/home1.png"><br>
|
||||
<img src="https://i.postimg.cc/9QxJ3Rc2/globalcss.png"><br>
|
||||
<img src="https://i.postimg.cc/VksDHBQ4/globaljs.png"><br>
|
||||
<img src="https://i.postimg.cc/HLV3TYLy/longclick.png"><br>
|
||||
<img src="https://i.postimg.cc/XJ58ysdN/option1.png"><br>
|
||||
<img src="https://i.postimg.cc/0NFnQT6H/option2.png"></p>
|
||||
<h4 id="help-with-localization">Help with localization</h4>
|
||||
<p>We encourage everyone to help with localization. The following is how to do.</p>
|
||||
<ul>
|
||||
<li>Fork this repository</li>
|
||||
<li>Copy res/values/strings.xml to path like res/values-%(lang)/, replace %(lang) with <a href="http://www.loc.gov/standards/iso639-2/php/code_list.php">the ISO 639-1 language code</a>.</li>
|
||||
<li>Translate res/values-%(lang)/strings.xml</li>
|
||||
<li>Translate assets/help_%(lang).html from assets/help_en.html</li>
|
||||
<li>Make a Pull Request</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 24 March 2024<br>
|
||||
add more repositories<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,103 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Resource redirection</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Resource redirection
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
<li><a href="../tags/redirection/index.html#">redirection</a> </li>
|
||||
|
||||
</ul>
|
||||
<p>⚠️<span style="color:red">Redirection forwards cookies</span> with the setting option "Redirect cookies" enabled, so use the options with care.</p>
|
||||
<h4 id="setting-options-url-redirection-vs-resource-redirection">Setting options: "Url redirection" vs. "Resource redirection"</h4>
|
||||
<p>"Url redirection" redirects the main/page url only while "Resource redirection" is for all urls in the page.</p>
|
||||
<h4 id="global-redirection">Global redirection</h4>
|
||||
<p><a href="i:60/data/data/info.torapp.uweb/files/config.html:https://jamesfengcao.codeberg.page/en/searchurl/config.html">Global redirection</a> is enabled with the setting option "Resource redirection" or both "Url redirection" and "Redirect cookies".</p>
|
||||
<p>When a valid global redirection url is set, the "default.redirect" has no effect, and any url resource is fetched with the new url by appending the original url to the global redirection url.</p>
|
||||
<ul>
|
||||
<li>
|
||||
<p>If the global redirection url ends with '/', then the resource is fetched with by the url "[global redirection url] + [url]". For example, "https://domain.com/pathXXX/https://cnn.com".</p>
|
||||
</li>
|
||||
<li>
|
||||
<p>(to provide more options to users) If the global redirection url does not end with '/', it means the global redirection url is naked. then the resource is fetched with by the url "[global redirection url] + '/'+ [url without scheme]". For example, when the global redirection url is "https://domain.com/pathXXX", the real url to visit "https://cnn.com" is "https://domain.com/pathXXX/cnn.com".</p>
|
||||
</li>
|
||||
</ul>
|
||||
<h4 id="defaultredirect-valid-only-without-global-redirection-url">"default.redirect" (valid only without global redirection url)</h4>
|
||||
<p>Click the following links to append mirrors to the file "default.redirect":<br>
|
||||
<a target="_self" href="i:0gdefault.redirect:../../zh/searchurl/txt/redirect.cfg">google recaptcha mirror</a></p>
|
||||
<p>Each line of the file "default.redirect" has the following format:<br>
|
||||
[domain name]:[regular expression]:[replacement expression]</p>
|
||||
<p>in which "[regular expression]" is as defined by java language, and cannot have ":" inside; if empty, it defaults to be same as "[domain name]".</p>
|
||||
<h5 id="ways-to-enable-domain-redirection">Ways to enable domain redirection:</h5>
|
||||
<ul>
|
||||
<li><a href="../urls/index.html">Long pressing the image button</a>。</li>
|
||||
<li>Long pressing the setting button, enable the option "url redirection".</li>
|
||||
<li>Long pressing the setting button, enable the option "Resource redirection".</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 17 June 2023<br>
|
||||
add latest.html<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,94 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Search engine files</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Search engine files
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
<li><a href="../tags/search%20engine/index.html#">search engine</a> </li>
|
||||
|
||||
</ul>
|
||||
<p>Any ".search" file can be opened as search engine file, each line of which has one of the following formats:<br>
|
||||
[Engine name]:[url without '%s' inside]<br>
|
||||
[Engine name]:[url with '%s' as keyword]<br>
|
||||
[Engine name]:POST:[post params with '%s' as keyword]:[url]<br>
|
||||
[Engine name]:[Extra request headers]:[post params with '%s' as keyword]:[url]</p>
|
||||
<ul>
|
||||
<li>[Extra request headers] Ex. "X-Forwarded-For;8.8.8.8"</li>
|
||||
<li>when [post params] is empty, the url should have '%s' as keyword. Ex. <a href="../search/index.html">bingUS engine w/ chatgpt</a></li>
|
||||
</ul>
|
||||
<p>Limitations (they are here for performance reasons):</p>
|
||||
<ul>
|
||||
<li>The first engine in the file must be the first type that has no '%s' in the engine url.</li>
|
||||
<li>Internal scheme engine urls (such as i:, d:, c:) must have '%s', since '%s' format is more general (only type 2 is allowed, since POST makes no sense for internal schemes).</li>
|
||||
</ul>
|
||||
<h4 id="local-engines">Local engines</h4>
|
||||
<p>c:[command line with '%s' as keyword]<br>
|
||||
d:mimetype:[command line with '%s' as keyword]:[base url for external resources]</p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 4 March 2023<br>
|
||||
i:0m to support extra headers<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,102 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>JS/CSS/HTML/preprocessing for domains</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">JS/CSS/HTML/preprocessing for domains
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
<li><a href="../tags/javascript/index.html#">javascript</a> </li>
|
||||
|
||||
<li><a href="../tags/css/index.html#">css</a> </li>
|
||||
|
||||
</ul>
|
||||
<h3 id="javascript-load-when-page-completes-earliest-loaded-js-should-use-sitecss">Javascript (load when page completes, earliest loaded JS should use sitecss).</h3>
|
||||
<ul>
|
||||
<li>Need to be named as "[domain root].js", such as "yahoo.com.js" or "finance.yahoo.com.js". The script will be loaded on the whole domain tree sites. If several files matches the domain, then the script with longest file name is loaded.</li>
|
||||
<li>Script must be put under the folder "sitejs" or "/data/data/info.torapp.uweb/files/sitejs". The later folder has the priority.</li>
|
||||
<li>Long press the button "settings", check the option "Run user scripts".</li>
|
||||
<li>Support 2/3-segment domains. If the length of the last 2-segments of domain is less than 7 (ex. "com.pl"), then it is treated as one segment.</li>
|
||||
</ul>
|
||||
<h3 id="css-style-and-earliest-loaded-js">CSS style and earliest loaded JS</h3>
|
||||
<ul>
|
||||
<li>Need to be named as "[domain root].css", such as yahoo.com.css or finance.yahoo.com.css。</li>
|
||||
<li>Under folder "sitecss".</li>
|
||||
<li>"[domain root].js" is loaded at the earliest time.</li>
|
||||
<li>Long press the button "settings", check the option "Apply user styles".</li>
|
||||
</ul>
|
||||
<p>If file "default.css" exists, the style will be applied to all sites not matching [domain root].css.</p>
|
||||
<h3 id="extra-html-and-preprocessing">Extra html and preprocessing</h3>
|
||||
<ul>
|
||||
<li>Need to be named as "[domain].html". Notice: the file name stem here is "[full domain]" not "[domain root]".</li>
|
||||
<li>Under folder "siteextra".</li>
|
||||
<li>Long press the button "settings", check the option "Apply user extra".</li>
|
||||
</ul>
|
||||
<p>An open tag as the last tag in the last 50 bytes of the user extra html expects more content to follow, thus the extra html is placed before the site html. Ex. when the extra html ends with "<textarea>" or "<plaintext>", the site source html appears as the value of the textarea/plaintext element, thus the extra html can further process the the site source html before rendering. A self closed tag such as "<br>" acts like open tags, also makes the site source follow the extra html.</p>
|
||||
<p>"sitejs/.js", "sitecss/.css", "sitecss/.js" and "siteextra/.html" are applied to all non-http urls (file urls etc.).</p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 20 April 2023<br>
|
||||
support .js files under 'css' folder<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,124 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Configuration</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Configuration
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<p><a href="i:61ver:../../latest.html#">Check for updates</a></p>
|
||||
<h4 id="ui">UI</h4>
|
||||
<ul>
|
||||
<li><a href="../search/index.html">Search engines</a></li>
|
||||
<li><a href="../searchurl/homescreen.html">Home screens</a></li>
|
||||
<li><a href="i:61:../searchurl/func.html">UI</a> (<a href="i:61:https://gitee.com/jamesfengcao/uweb/raw/master/en/searchurl/func.html">gitee</a>)</li>
|
||||
<li><a href="../searchurl/webdav.html">webdav install-able menu generator</a></li>
|
||||
</ul>
|
||||
<h4 id="customization">Customization</h4>
|
||||
<ul>
|
||||
<li>Long pressing menus for toolbar buttons</li>
|
||||
<li><a href="../uas/index.html">User agents</a></li>
|
||||
<li><a href="../rjs/index.html">Javascript</a></li>
|
||||
<li><a href="../urls/index.html">Url services</a></li>
|
||||
<li><a href="../links/index.html">Links</a></li>
|
||||
<li><a href="../cmds/index.html">Commands</a></li>
|
||||
<li><a href="../rjs/index.html">Remote javascript</a></li>
|
||||
<li><a href="../textprocess/index.html">Menu for selections</a></li>
|
||||
<li><a href="../longclick/index.html">Menu for long pressing hypertext</a></li>
|
||||
<li><a href="../icons/index.html">Toolbar</a></li>
|
||||
<li><a href="../gesture/index.html">Gestures</a></li>
|
||||
<li><a href="../acmd/index.html">Address bar command modes</a></li>
|
||||
<li><a href="i:60config.html:../searchurl/config.html">Advanced</a></li>
|
||||
</ul>
|
||||
<h4 id="advanced">Advanced</h4>
|
||||
<h5 id="content">Content</h5>
|
||||
<ul>
|
||||
<li><a href="../adblock/index.html">AD blocking</a></li>
|
||||
<li><a href="../globalcss/index.html">CSS styles</a></li>
|
||||
<li><a href="../redirect/index.html">Redirection</a></li>
|
||||
<li><a href="../offlinecache/index.html">Offline cache</a></li>
|
||||
<li><a href="../sitejs/index.html">JS/CSS/HTML/preprocessing for domains</a></li>
|
||||
<li><a href="../url2site/index.html">Any urls as website</a></li>
|
||||
</ul>
|
||||
<h5 id="tools">Tools</h5>
|
||||
<ul>
|
||||
<li><a href="../bookmarklet/index.html">Bookmarklets</a></li>
|
||||
<li><a href="../tcron/index.html">Cron & more</a></li>
|
||||
<li><a href="../filecap/index.html">Custom file handling</a></li>
|
||||
<li><a href="../html5/index.html">Html5 application</a></li>
|
||||
<li><a href="../termux/index.html">Termux</a></li>
|
||||
</ul>
|
||||
<h5 id="info">Info</h5>
|
||||
<ul>
|
||||
<li><a href="../assets/help_en.html">Manual</a></li>
|
||||
<li><a href="../tips/index.html">Tips</a></li>
|
||||
<li><a href="../filenames/index.html">Configuration files</a></li>
|
||||
<li><a href="../bookmark/index.html">Bookmarks</a></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 19 December 2023<br>
|
||||
version 1037<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,32 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<body>
|
||||
<ul>
|
||||
|
||||
<li><a href="adblock/index.html#">Adblock</a> 1</li>
|
||||
|
||||
<li><a href="clipboard/index.html#">Clipboard</a> 1</li>
|
||||
|
||||
<li><a href="css/index.html#">Css</a> 1</li>
|
||||
|
||||
<li><a href="curl/index.html#">Curl</a> 1</li>
|
||||
|
||||
<li><a href="javascript/index.html#">Javascript</a> 3</li>
|
||||
|
||||
<li><a href="redirection/index.html#">Redirection</a> 1</li>
|
||||
|
||||
<li><a href="search%20engine/index.html#">Search Engine</a> 1</li>
|
||||
|
||||
<li><a href="ssh/index.html#">Ssh</a> 1</li>
|
||||
|
||||
<li><a href="tdict/index.html#">Tdict</a> 1</li>
|
||||
|
||||
<li><a href="termux/index.html#">Termux</a> 3</li>
|
||||
|
||||
<li><a href="tools/index.html#">Tools</a> 1</li>
|
||||
|
||||
<li><a href="windows/index.html#">Windows</a> 1</li>
|
||||
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,54 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="alternate" type="application/rss+xml" href="../../en/tags/adblock/index.xml" title="uweb browser: unlimited power">
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Adblock</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Adblock</h1>
|
||||
<ul class="posts">
|
||||
|
||||
<li class="post">
|
||||
<a href="../../adblock_domain/index.html#">
|
||||
<span>Hosts files</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,54 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="alternate" type="application/rss+xml" href="../../en/tags/clipboard/index.xml" title="uweb browser: unlimited power">
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Clipboard</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Clipboard</h1>
|
||||
<ul class="posts">
|
||||
|
||||
<li class="post">
|
||||
<a href="../../textprocess/index.html#">
|
||||
<span>Text selection/processing</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,58 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="alternate" type="application/rss+xml" href="../../en/tags/css/index.xml" title="uweb browser: unlimited power">
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Css</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Css</h1>
|
||||
<ul class="posts">
|
||||
|
||||
<li class="post">
|
||||
<a href="../../sitejs/index.html#">
|
||||
<span>JS/CSS/HTML/preprocessing for domains</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,58 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="alternate" type="application/rss+xml" href="../../en/tags/curl/index.xml" title="uweb browser: unlimited power">
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Curl</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Curl</h1>
|
||||
<ul class="posts">
|
||||
|
||||
<li class="post">
|
||||
<a href="../../filecap/index.html#">
|
||||
<span>Custom file handling</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,70 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="alternate" type="application/rss+xml" href="../../en/tags/javascript/index.xml" title="uweb browser: unlimited power">
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Javascript</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Javascript</h1>
|
||||
<ul class="posts">
|
||||
|
||||
<li class="post">
|
||||
<a href="../../sitejs/index.html#">
|
||||
<span>JS/CSS/HTML/preprocessing for domains</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="post">
|
||||
<a href="../../bookmarklet/index.html#">
|
||||
<span>Bookmarklets</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="post">
|
||||
<a href="../../longclick/index.html#">
|
||||
<span>Long pressed link menu</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,54 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="alternate" type="application/rss+xml" href="../../en/tags/redirection/index.xml" title="uweb browser: unlimited power">
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Redirection</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Redirection</h1>
|
||||
<ul class="posts">
|
||||
|
||||
<li class="post">
|
||||
<a href="../../redirect/index.html#">
|
||||
<span>Resource redirection</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,54 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="alternate" type="application/rss+xml" href="../../en/tags/search-engine/index.xml" title="uweb browser: unlimited power">
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Search Engine</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Search Engine</h1>
|
||||
<ul class="posts">
|
||||
|
||||
<li class="post">
|
||||
<a href="../../searchcat/index.html#">
|
||||
<span>Search engine files</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,58 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="alternate" type="application/rss+xml" href="../../en/tags/ssh/index.xml" title="uweb browser: unlimited power">
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Ssh</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Ssh</h1>
|
||||
<ul class="posts">
|
||||
|
||||
<li class="post">
|
||||
<a href="../../textprocess/index.html#">
|
||||
<span>Text selection/processing</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,58 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="alternate" type="application/rss+xml" href="../../en/tags/tdict/index.xml" title="uweb browser: unlimited power">
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Tdict</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Tdict</h1>
|
||||
<ul class="posts">
|
||||
|
||||
<li class="post">
|
||||
<a href="../../tools/index.html#">
|
||||
<span>Tools</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,70 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="alternate" type="application/rss+xml" href="../../en/tags/termux/index.xml" title="uweb browser: unlimited power">
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Termux</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Termux</h1>
|
||||
<ul class="posts">
|
||||
|
||||
<li class="post">
|
||||
<a href="../../textprocess/index.html#">
|
||||
<span>Text selection/processing</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="post">
|
||||
<a href="../../tools/index.html#">
|
||||
<span>Tools</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
<li class="post">
|
||||
<a href="../../filecap/index.html#">
|
||||
<span>Custom file handling</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,58 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="alternate" type="application/rss+xml" href="../../en/tags/tools/index.xml" title="uweb browser: unlimited power">
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Tools</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Tools</h1>
|
||||
<ul class="posts">
|
||||
|
||||
<li class="post">
|
||||
<a href="../../tools/index.html#">
|
||||
<span>Tools</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,58 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
<link rel="alternate" type="application/rss+xml" href="../../en/tags/windows/index.xml" title="uweb browser: unlimited power">
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Windows</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Windows</h1>
|
||||
<ul class="posts">
|
||||
|
||||
<li class="post">
|
||||
<a href="../../textprocess/index.html#">
|
||||
<span>Text selection/processing</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,109 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>cron</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">cron
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<h4 id="crontab-with-enhanced-semantics">crontab (with enhanced semantics)</h4>
|
||||
<p>For performance, the file "crontab" uses single space as field separator. Letters are not suppored currently. So use "1" for "January" and 2 for "Tuesday" etc.</p>
|
||||
<p>The sixth field in crontab file could be in the format of <a href="../links/index.html">internal links</a>. Specifically, "c:" to execute the following commands in termux and "!" to execute commands directly. If the sixth field is not in any of above formats, then the field will appear as the message of alarm clock.</p>
|
||||
<p>To make crontab more powerful, we changed the semantics as follows:<br>
|
||||
The day of a command's execution can be specified by two fields — day of month, and day of week. The command will be run when <span style="color:red">both</span> fields matche the current time.</p>
|
||||
<p>Note (the original crantab semantics):<br>
|
||||
The day of a command's execution can be specified by two fields — day of month, and day of week. If both fields are restricted (i.e., aren't *), the command will be run when either field matches the current time. For example, ``30 4 1,15 * 5'' would cause a command to be run at 4:30 am on the 1st and 15th of each month, plus every Friday.</p>
|
||||
<h5 id="make-crontab-persist-after-os-rebooting">make crontab persist after OS rebooting</h5>
|
||||
<p>If uweb browser was launched at least once after rebooting, the crontab jobs are scheduled as normal.</p>
|
||||
<p>To keep crontab take effect without launching uweb browser once:</p>
|
||||
<ul>
|
||||
<li>Install the "com.termux.boot" and "com.termux" Apps.</li>
|
||||
<li>Create an executable file in termux under the folder "~/.termux/boot/" containing the two lines:<br>
|
||||
#!/data/data/com.termux/files/usr/bin/sh<br>
|
||||
am broadcast -n info.torapp.uweb/.AlarmReceiver --es uweb.line ""</li>
|
||||
<li>Launch "com.termux.boot" once.</li>
|
||||
</ul>
|
||||
<h4 id="tcron">tcron</h4>
|
||||
<p>With the option "custom file handling" enabled, "default.rc" runs as shell script at uweb launching time and "default.rc2" runs whenever uweb becomes foreground.</p>
|
||||
<p>Use tcron (<a href="i:0bhttps://fastly.jsdelivr.net/gh/torappinfo/uwebjs/bin/tcron.tgz">Click to install</a>) with "default.rc" or "default.rc2".</p>
|
||||
<p>usage: tcron logfile command hours [timezone delay_sec elsecommand]<br>
|
||||
execute "command" during time interval once.<br>
|
||||
where logfile modification time must be updated if "command" runs successfully.</p>
|
||||
<p>hours: If positive, then each day is divided into multiple intervals (unit: hour), and in each interval, the "command" runs only once.<br>
|
||||
If negative, then the unit is minute.<br>
|
||||
hours could be also in "hh:mm-hh:mm,..." format. Ex. "6:00-8:30,11:00-13:00,5:30-6:30".<br>
|
||||
timezone: an integer, default to be "8" for Beijing China (UTC+8). "0" for Greenwich UK (UTC+0).<br>
|
||||
delay_sec: execute "command" after "delay_sec" seconds.<br>
|
||||
elsecommand: executed whenever "command" not run.</p>
|
||||
<p>ex:<br>
|
||||
set PATH=/system/bin:/data/data/info.torapp.uweb/files/bin<br>
|
||||
#Empty the folder "baidu" every 30 days.<br>
|
||||
tcron /sdcard/b "rm -rf /sdcard/baidu/*;toybox touch /sdcard/b" 720</p>
|
||||
<p><a target="_self" href="i:0hdefault.rc:../searchurl/txt/default.rc">Install example default.rc file for termux</a></p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 4 January 2024<br>
|
||||
fix gemini search engine<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,102 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Termux</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Termux
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<p>Only the termux versions provided along with uweb browser can work seamlessly. For android 10+, please install termux before installing uweb browser. If uweb is already installed, users can uninstall it first, then install termux and reinstall uweb browser.</p>
|
||||
<h4 id="termux-bookmarks">Termux bookmarks</h4>
|
||||
<p>Long pressing the following links then either "commands"->"<a href="../urls/index.html">bookmark</a>" to add bookmarks or "open in new tab" to execute.<br>
|
||||
<a href="c:bc -l">GNU bc (basic calculator)</a><br>
|
||||
<a href="c:bc -l *.bc">bc with all extensions</a></p>
|
||||
<h4 id="click-the-following-links-to-install-termux-configurations">Click the following links to install termux configurations:</h4>
|
||||
<p><a href="i:0h/data/data/com.termux/files/home/.bashrc:../../termux/bashrc">.bashrc</a></p>
|
||||
<p><a href="i:0h/data/data/com.termux/files/home/.inputrc:../../termux/inputrc">.inputrc</a></p>
|
||||
<p><a href="i:0h/data/data/com.termux/files/home/z.sh:https://fastly.jsdelivr.net/gh/rupa/z/z.sh">z.sh</a></p>
|
||||
<p><a href="i:0h/data/data/com.termux/files/home/commacd.sh:https://fastly.jsdelivr.net/gh/shyiko/commacd/commacd.sh">commacd.sh</a></p>
|
||||
<p><a href="i:0h/data/data/com.termux/files/home/.profile:../../termux/profile">.profile</a> : only for kshell with naked termux (no initial packages, need the following fix for termux quick crash to be launched)</p>
|
||||
<h4 id="copy-existing-termux-installation-to-other-devices">Copy existing termux installation to other devices</h4>
|
||||
<p>Using uweb to copy (Long pressing the following links and "open in new tab" to fix/send/receive):</p>
|
||||
<ul>
|
||||
<li>target device: install termux app.</li>
|
||||
<li>(optional)<a href="d::mkdir -p /data/user/0/com.termux/files/home/.termux;cd /data/user/0/com.termux/files;mkdir usr;cd home/.termux;ln -s /system/bin/sh shell:">fix termux quick crash with "updateonly" versions</a> by long click this link.</li>
|
||||
<li>both devices: launch termux and acquire wakelocks. uweb to checke option "Use termux" in UI configuration page for long time tranferring. Uweb itself does not hold any wakelock thus may have issues for huge data transmission.</li>
|
||||
<li>source device: uweb to visit <a href="files:///data/data/com.termux/files">termux folder</a> by long click, then long click "usr" folder to send to network.</li>
|
||||
<li>target device: uweb to visit <a href="files:///data/data/com.termux/files">termux folder</a> by long click, then long click "right arrow" button to receive from network.</li>
|
||||
</ul>
|
||||
<h5 id="using-ssh-to-copy">Using ssh to copy</h5>
|
||||
<ul>
|
||||
<li>target device: install termux app, then run "apt install openssh" inside the termux.</li>
|
||||
<li>source device: Send the "~/.ssh" folder with uweb browser to the network.</li>
|
||||
<li>target device: Uweb to visit "file://data/data/com.termux/files/home/" to reach the folder, then receive the data sent by the above source device.</li>
|
||||
<li>source device: Run "sshd".</li>
|
||||
<li>target device: Run the command "scp -P 8022 -r [source ip]:.. .."</li>
|
||||
</ul>
|
||||
<h4 id="tips">Tips</h4>
|
||||
<p>File system navigation:<br>
|
||||
With <a href="https://github.com/rupa/z">z.sh</a> and <a href="https://github.com/shyiko/commacd">commacd</a>, user can reach any folder with few key stokes. Run "v" to launch uweb file manager on the current working directory, long click any file link to share.</p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 9 December 2023<br>
|
||||
add TV mode<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,116 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Text selection/processing</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Text selection/processing
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
<li><a href="../tags/termux/index.html#">termux</a> </li>
|
||||
|
||||
<li><a href="../tags/ssh/index.html#">ssh</a> </li>
|
||||
|
||||
<li><a href="../tags/clipboard/index.html#">clipboard</a> </li>
|
||||
|
||||
<li><a href="../tags/windows/index.html#">windows</a> </li>
|
||||
|
||||
</ul>
|
||||
<p>Click the following links to install menus for long pressing the button "link":<br>
|
||||
<a href="i:0gdefault.select::copyHtml:html/clip:%0A">Copy selected text with html format to clipboard</a></p>
|
||||
<p><a href="i:0gdefault.select::Home:/uweb:printf file://data/data/info.torapp.uweb/files/home5.search%5C location.href=%5C%22i:15;cat;printf %5C%22%0A">Search with home screen</a></p>
|
||||
<p><a href="i:0gdefault.select::google Translate:/uweb:printf 'https://translate.google.com/?sl=auto&tl=en&op=translate&text=';cat|tr ' ' '%2B'%0A">google Translate</a></p>
|
||||
<p><a href="i:0gdefault.select::bing Translate:/uweb:printf 'https://cn.bing.com/translator/?from=&to=en&text=';cat|tr ' ' '%2B'%0A">bing translate</a></p>
|
||||
<p><a href="i:0gdefault.select::deepL:/uweb:printf https://www.deepl.com/translator-mobile#auto/en/;cat|sed 's/ /%2520/g'%0A">deepL</a></p>
|
||||
<p>The file "default.select" defines text processing menus for selected text. If no text is selected, the menu item operates on the whole page. Each line of the file has the following format:<br>
|
||||
[Name]:[mimetype]:[command line]</p>
|
||||
<p>[mimetype] specifies input/output for [command line].<br>
|
||||
It formats as "[input mimetype]/[output mimetype]".<br>
|
||||
[input mimetype] can be the following:</p>
|
||||
<ul>
|
||||
<li>"html": rich text</li>
|
||||
<li>"" (empty): text</li>
|
||||
<li>".js" file name under configuration folder. The js file is evaluated and its return value is passed to [command line] as standard input.</li>
|
||||
</ul>
|
||||
<p>[output mimetype] is same as the one defined in "<a href="../cmds/index.html">Commands</a>".</p>
|
||||
<ul>
|
||||
<li>regular mimetype such as "text/html": output as the mimetype</li>
|
||||
<li>"uweb": output as links</li>
|
||||
<li>"uwebA": output as "A" link, all characters including newlines are part of the link.</li>
|
||||
<li>"clip": output to clipboard</li>
|
||||
<li>"termux": output as termux command</li>
|
||||
</ul>
|
||||
<p><a target="_self" href="i:0hcheck.js:../../zh/searchurl/txt/check.js">checked.js</a>: Evaluate checked.js and return value as standard input for the command line. For any file url ending with "/", optionally append "?[prefix][<em>[postfix]]". For example, "file:///sdcard/?</em>.png" lists all .png files under the folder "/sdcard". Select files and process them with checked.js(such as "copy to PC" as the later example).</p>
|
||||
<p>default.select sample file:<br>
|
||||
copy2addressbar:/uweb:printf i:15;cat<br>
|
||||
copy2PCClipboard::ssh [user:password]@192.168.2.102 "DISPLAY=:0 xsel -i"<br>
|
||||
richtext2PCClipboard:html:ssh [user:password]@192.168.2.102 "DISPLAY=:0 xsel -i"<br>
|
||||
copyFiles:checked.js:while read fname;do scp $fname [user:password]@192.168.2.102:Downloads/.; done</p>
|
||||
<p>Here we assume that the user PC has IP address as "192.168.2.102".<br>
|
||||
To use ssh or scp, users need to install uweb compatible Termux provided on the <a href="../en/">uweb apk download page</a>, and install openssl under termux (apt install openssl).<br>
|
||||
PCs need command "xsel" available to operate on copy/paste.</p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 11 December 2023<br>
|
||||
add RSS<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,86 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Tips</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Tips
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<p><strong>Text processing for clipboard data</strong>:<br>
|
||||
On home screen, pressing the sharing button of the bottom toolbar popups the <a href="../textprocess/index.html">text processing menu</a> for clipboard data.</p>
|
||||
<p><strong>To show web pages in desktop mode</strong>:<br>
|
||||
PC button + option "wide viewport" + global js "force page resizable".</p>
|
||||
<p><strong>Playing audio when screen off</strong><br>
|
||||
Option "Floating video" + video fullscreen playing</p>
|
||||
<p><strong>Multiple home screens and Next/Prev page</strong>:<br>
|
||||
home5.html, home6.mht(or .html or .search), home7.mht(or .html or .search), ... can be visited via pressing the right arrow button while home4.mht(or .html or .search), home3.mht(or .html or .search) ... with long pressing the left arrow.</p>
|
||||
<p>Click download button on the bottom toolbar to save remote webpage, the resulted offline file can be used as one of the home screens.</p>
|
||||
<p><strong>Configuration folder and file managers</strong><br>
|
||||
With <a href="../bookmark/index.html">bookmark</a>, configuration folders can be symbolic linked to other public folders or managed by 3rd party file managers via termux.</p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 1 December 2023<br>
|
||||
rename pccopy.md to textprocess.md<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,100 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Tools</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Tools
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
<li><a href="../tags/termux/index.html#">termux</a> </li>
|
||||
|
||||
<li><a href="../tags/tools/index.html#">tools</a> </li>
|
||||
|
||||
<li><a href="../tags/tdict/index.html#">tdict</a> </li>
|
||||
|
||||
</ul>
|
||||
<p>This page is for <a href="../en/">uweb browser</a>.</p>
|
||||
<h4 id="a-hrefi0bhttpsfastlyjsdelivrnetghtorappinfouwebjsbintdict_loctargzinstall-tdict_local-search-with-local-indexes-and-remote-contenta"><a href="i:0bhttps://fastly.jsdelivr.net/gh/torappinfo/uwebjs/bin/tdict_loc.tar.gz">install tdict_local (search with local indexes and remote content)</a></h4>
|
||||
<p>Click to install the following local indexes with corresponding search engines (for test only).<br>
|
||||
<a href="i:0hahd.tidx:https://fastly.jsdelivr.net/gh/torappinfo/uwebjs/bin/ahd.tidx">install the indexes for "American heritage dictionary (en-en&zh with AHD/D.J./K.K. pronunciation)"</a><br>
|
||||
<a href="i:00AHD:d:text/html:tdict_loc ahd \'%s\'|loc2html text/plain \'https://s1.asytech.cn/s/HxY9QT5cdp63ZPK/download?path=%2F&files=ahd.dict\':">Install AHD to home screen</a></p>
|
||||
<p><a href="i:0henja.tidx:https://fastly.jsdelivr.net/gh/torappinfo/uwebjs/bin/enja.tidx">Indexes for "研究社新編英和活用大辞典(English usage: en-en&ja)"</a><br>
|
||||
<a href="i:00enja:d:text/html:tdict_loc enja \'%s\'|loc2html text/plain \'https://s1.asytech.cn/s/oaoGniEBKLnWzoj/download?path=%2F&files=enja.dict\':">Install "English usage (en-en&ja)"</a></p>
|
||||
<p><a href="i:0hsoed.tidx:https://fastly.jsdelivr.net/gh/torappinfo/uwebjs/bin/soed.tidx">Indexes for SOED6</a><br>
|
||||
<a href="i:00soed:d:text/html:tdict_loc soed \'%s\'|loc2html text/plain \'https://s1.asytech.cn/s/oaoGniEBKLnWzoj/download?path=%2F&files=soed.dict\':">install SOED</a></p>
|
||||
<p>The following dictionaries work better with markdown processor.<br>
|
||||
<a href="i:0hmd.html:https://fastly.jsdelivr.net/gh/torappinfo/uwebjs/txt/mdme.html">Install markdown processor</a><br>
|
||||
<a href="i:0hmwi.tidx:https://fastly.jsdelivr.net/gh/torappinfo/uwebjs/bin/mwi.tidx">Indexes for "Merriam Webster International Unabridged"</a><br>
|
||||
<a href="i:00mwi:d:text/html:tdict_loc mwi \'%s\'|loc2html text/html.md.html \'https://s1.asytech.cn/s/oaoGniEBKLnWzoj/download?path=%2F&files=mwi.dict\':">Install MWI</a></p>
|
||||
<p><a href="i:0hode3.tidx:https://fastly.jsdelivr.net/gh/torappinfo/uwebjs/bin/ode3.tidx">Indexes for ODE3</a><br>
|
||||
<a href="i:00ode:d:text/html:tdict_loc ode3 \'%s\'|loc2html text/html.md.html \'https://s1.asytech.cn/s/oaoGniEBKLnWzoj/download?path=%2F&files=ode3.dict\':">Install ODE3</a></p>
|
||||
<p><a href="i:0hoed.tidx:https://fastly.jsdelivr.net/gh/torappinfo/uwebjs/bin/oed.tidx">Indexes for OED</a><br>
|
||||
<a href="i:00oed:d:text/html:tdict_loc oed \'%s\'|loc2html text/html.md.html https://1drv.ws/u/s!Am0GiFVIDNbZi0IhtTMjeR6rdmd5:">Install OED</a></p>
|
||||
<p><a href="i:0hbe10.tidx:https://fastly.jsdelivr.net/gh/torappinfo/uwebjs/bin/be10.tidx">Indexes for "Encyclopedia Britannica"</a><br>
|
||||
<a href="i:00be10:d:text/html:tdict_loc be10 \'%s\'|loc2html text/html.md.html https://1drv.ws/u/s!Am0GiFVIDNbZi0WfGAwo1S-kq1Lv:">Install "Encyclopedia Britannica"</a></p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 27 September 2022<br>
|
||||
add en/.../tools.md<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,8 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<body>
|
||||
<ul>
|
||||
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,8 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<body>
|
||||
<ul>
|
||||
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,82 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Make any url as website</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Make any url as website
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<p>The <a href="../en/">uweb</a> internal link "<a href="../links/index.html">i:0m</a>" make any url such as download or indirect link visitable as a website. The test mirrors in the uweb manual are examples using the following tricks:</p>
|
||||
<ul>
|
||||
<li>"i:0m04:[url]": to treat the [url] content as html with bookmarklet.</li>
|
||||
<li>"i:0m?:[url]": to treat the [url] content as html, handling css/js properly.</li>
|
||||
<li>"i:0m?[postfix]:[url]": auto append query postfix to url to retrieve content.</li>
|
||||
<li>"i:0mi:5h:[url]": similar to "i:0m?:[url]", to treat the [url] content as html (for download or no-script links etc.)</li>
|
||||
<li>"i:0mi:5h?[postfix]::[url]": similar to "i:0m?[postfix]:[url]". auto append query postfix to url to retrieve content.</li>
|
||||
<li>"i:0mi:5h/[regex]/[replacement]::[url]": use the result of regular expression replacement to retrieve the content.</li>
|
||||
</ul>
|
||||
<p>For more complicated links such as cloud storage shared links, which need user gestures to reach temporary generated content link, use<br>
|
||||
"i:0m/.../[local.html]:[url]", where the local file "/.../[local.html]" processes "[url]" as needed.</p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 14 May 2023<br>
|
||||
update bingAI/js/optionsSets.js<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,133 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>Url services</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2Lang('zh')">简体中文</a>
|
||||
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">Url services
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
</ul>
|
||||
<p>Click the following links to install url services with <a href="../en/">uweb browser</a>. <b>Force exit and re-launch the app</b>, then long press the "image" button to popup the menu.</p>
|
||||
<p><a href="i:01Fullscreen video:i:5f">Fullscreen video:i:5f</a></p>
|
||||
<p><a href="i:01Redirect/edit:e:">Redirect/edit:e:</a></p>
|
||||
<p><a href="i:01Save2autocomplete:i:51:">Save2autocomplete:i:51:</a></p>
|
||||
<p><a href="i:01Bookmark:i:52:">Bookmark:i:52:</a></p>
|
||||
<p><a href="i:01Note:i:53:">Note:i:53:</a></p>
|
||||
<p><a href="i:01Save engine:i:54:">Save engine:i:54:</a></p>
|
||||
<p><a href="i:01Save link:i:55:">Save link:i:55:</a></p>
|
||||
<p><a href="i:01Save to desktop:i:58">Save to desktop:i:58</a></p>
|
||||
<p><a href="i:01Add to media storage::001">Add to media storage::001</a></p>
|
||||
<p><a href="i:01Extract web app:i:0bsitecache/local/:">Extract web app:i:0bsitecache/local/:</a></p>
|
||||
<p><a href="i:01tgurl:https://tx.me/share/url?url=">tgurl:https://tx.me/share/url?url=</a></p>
|
||||
<p><a href="i:01tgdownload:https://tx.me/share/url?url=../download ">tgdownload:https://tx.me/share/url?url=../download </a></p>
|
||||
<p><a href="i:01Compatible mode:i:5d">Compatible mode:i:5d</a></p>
|
||||
<p><a href="i:01papago:https://papago.naver.net/website?locale=en&target=en&url=">papago:https://papago.naver.net/website?locale=en&target=en&url=</a></p>
|
||||
<p><a href="i:01google translate:https://translate.google.com/translate?sl=auto&tl=en&u=">google translate:https://translate.google.com/translate?sl=auto&tl=en&u=</a></p>
|
||||
<p><a href="i:01Source:view-source:">Source:view-source:</a></p>
|
||||
<p><a href="i:01outline:https://www.outline.com/">outline:https://www.outline.com/</a></p>
|
||||
<p><a href="i:012pdf:https://www.web2pdfconvert.com#">2pdf:https://www.web2pdfconvert.com#</a></p>
|
||||
<p><a href="i:01printfriendly:https://www.printfriendly.com/print/?url=">printfriendly:https://www.printfriendly.com/print/?url=</a></p>
|
||||
<p><a href="i:01htmlview:https://htmlview.glitch.me/?">htmlview:https://htmlview.glitch.me/?</a></p>
|
||||
<p><a href="i:01htmlpreview:https://htmlpreview.github.io/?">htmlpreview:https://htmlpreview.github.io/?</a></p>
|
||||
<p><a href="i:01webarchive:https://web.archive.org/web/*/">webarchive:https://web.archive.org/web/*/</a></p>
|
||||
<p><a href="i:01archive:https://archive.is/?run=1&url=">archive:https://archive.is/?run=1&url=</a></p>
|
||||
<p><a href="i:01googlecache:http://webcache.googleusercontent.com/search?q=cache:">googlecache:http://webcache.googleusercontent.com/search?q=cache:</a></p>
|
||||
<p><a href="i:01google by image:https://www.google.com/searchbyimage?safe=off&image_url=">google by image:https://www.google.com/searchbyimage?safe=off&image_url=</a></p>
|
||||
<p><a href="i:01tinyeye:https://tineye.com/search?url=">tinyeye:https://tineye.com/search?url=</a></p>
|
||||
<p><a href="i:01Yandex by image:https://yandex.com/images/search?family=yes&rpt=imageview&url=">Yandex by image:https://yandex.com/images/search?family=yes&rpt=imageview&url=</a></p>
|
||||
<p><a href="i:01ascii2d:https://ascii2d.net/search/url/">ascii2d:https://ascii2d.net/search/url/</a></p>
|
||||
<p><a href="i:01trace.moe:https://trace.moe/?url=">trace.moe:https://trace.moe/?url=</a></p>
|
||||
<p><a href="i:01saucenao:https://saucenao.com/search.php?url=">saucenao:https://saucenao.com/search.php?url=</a></p>
|
||||
<p><a href="i:01Add to Feedly:https://feedly.com/i/subscription/feed/">Add to Feedly:https://feedly.com/i/subscription/feed/</a></p>
|
||||
<p><a href="i:01Video download:https://tbvd.herokuapp.com/redirect?url=">Video download:https://tbvd.herokuapp.com/redirect?url=</a></p>
|
||||
<p><a href="i:01Audio download:https://tbvd.herokuapp.com/video?audio=on&url=">Audio download:https://tbvd.herokuapp.com/video?audio=on&url=</a></p>
|
||||
<p><a href="i:01Site analyzer:https://www.similarweb.com/website/">Site analyzer:https://www.similarweb.com/website/</a></p>
|
||||
<p><a href="i:01Site buildwith:https://builtwith.com/?">Site buildwith:https://builtwith.com/?</a></p>
|
||||
<p><a href="i:01instapaper:https://www.instapaper.com/text?u=">instapaper:https://www.instapaper.com/text?u=</a></p>
|
||||
<p><a href="i:01google docs:http://docs.google.com/gview?embedded=true&url=">google docs:http://docs.google.com/gview?embedded=true&url=</a></p>
|
||||
<p>in which "redirect" needs <a href="../redirect/index.html">default.redirect</a>.</p>
|
||||
<p>The following is mostly useful to send msg to TV (TV side needs to execute "wait for msg" first):</p>
|
||||
<p><a href="i:01Send url/file:i:5j">Send url/file:i:5j</a></p>
|
||||
<p><a href="i:01Send url(player):i:5ji:5p">Send url(player):i:5ji:5p</a></p>
|
||||
<p><a href="i:01Send url(bookmark):i:5ji:52../home5:">Send url(bookmark):i:5ji:52../home5:</a></p>
|
||||
<p><a href="i:01Send url(clipboard):i:5ji:5b">Send url(clipboard):i:5ji:5b</a></p>
|
||||
<p><a href="i:01Send url(fullscreen):i:5ji:5f">Send url(fullscreen):i:5ji:5f</a></p>
|
||||
<p><a href="i:01Send url(bookmark fullscreen):i:5ji:52../home5:i:5f">Send url(bookmark fullscreen):i:5ji:52../home5:i:5f</a></p>
|
||||
<p><a href="i:01Send url(site fullscreen):i:5ji:0mi:5f:">Send url(site fullscreen):i:5ji:0mi:5f:</a></p>
|
||||
<p><a href="i:01Send url(video):i:5ji:0mc16:">Send url(video):i:5ji:0mc16:</a></p>
|
||||
<p><a href="i:01Send url(bookmark site fullscreen):i:5ji:52../home5:i:0mi:5f:">Send url(bookmark site fullscreen):i:5ji:52../home5:i:0mi:5f:</a></p>
|
||||
<p>The following needs corresponding <a href="../html5/index.html">html5 application</a> to be installed:</p>
|
||||
<p><a href="i:01txtview:file:///data/user/0/info.torapp.uweb/files/app/txtview.html?url=">txtview:file:///data/user/0/info.torapp.uweb/files/app/txtview.html?url=</a></p>
|
||||
<p><a href="i:01md+katex:file:///data/user/0/info.torapp.uweb/files/app/mdkatex.html?url=">md+katex:file:///data/user/0/info.torapp.uweb/files/app/mdkatex.html?url=</a></p>
|
||||
<p><a href="i:01markdeep:file:///data/user/0/info.torapp.uweb/files/app/markdeep.html?url=">markdeep:file:///data/user/0/info.torapp.uweb/files/app/markdeep.html?url=</a></p>
|
||||
<p><a href="i:01plyr:file:///data/user/0/info.torapp.uweb/files/app/plyr.html?u=">plyr:file:///data/user/0/info.torapp.uweb/files/app/plyr.html?u=</a></p>
|
||||
<p><a href="i:01dplayer:file:///data/user/0/info.torapp.uweb/files/app/dplayer.html?u=">dplayer:file:///data/user/0/info.torapp.uweb/files/app/dplayer.html?u=</a></p>
|
||||
<p><a href="i:01pdf:file:///data/user/0/info.torapp.uweb/files/app/pdfviewer.html?file=">pdf:file:///data/user/0/info.torapp.uweb/files/app/pdfviewer.html?file=</a></p>
|
||||
<p><a href="i:01epub:file:///data/user/0/info.torapp.uweb/files/app/epub.html?u=">epub:file:///data/user/0/info.torapp.uweb/files/app/epub.html?u=</a></p>
|
||||
<p><a href="i:01djvu:file:///data/user/0/info.torapp.uweb/files/app/djvu.html?url=">djvu:file:///data/user/0/info.torapp.uweb/files/app/djvu.html?url=</a></p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 5 December 2023<br>
|
||||
i:5g sematics change<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,8 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<body>
|
||||
<ul>
|
||||
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,80 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>利用用户自定义样式屏蔽不良信息</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">利用用户自定义样式屏蔽不良信息
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
<li><a href="../tags/%e4%b8%8d%e8%89%af%e4%bf%a1%e6%81%af%e5%b1%8f%e8%94%bd/index.html#">不良信息屏蔽</a> </li>
|
||||
|
||||
<li><a href="../tags/css/index.html#">css</a> </li>
|
||||
|
||||
</ul>
|
||||
<p>点击以下链接可安装全局样式,清后台重启浏览器,长按底部工具条窗口按钮弹出对话框后勾选上述文件名即可屏蔽不良信息。<br>
|
||||
<a href="i:0hcss/floppymoose.css:http://www.floppymoose.com/userContent.css">floppymoose 广告屏蔽样式</a><br>
|
||||
<a href="i:0hcss/gozer.css:https://www.gozer.org/mozilla/ad_blocking/css/ad_blocking.css">gozer 广告屏蔽样式</a></p>
|
||||
<p><a href="../zh/">超微浏览器</a>支持<a href="../adblock_domain/index.html">根域名屏蔽</a>,完全绝杀手机不良信息小厂。但少部分不良信息大厂本身也提供高质量的内容服务,它们可以将不良信息伪装成正常的内容从而逃脱域名绝杀。<br>
|
||||
对这一部分不良信息而言,我们可以利用超微浏览器的自定义样式功能加以屏蔽。</p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 24 September 2022<br>
|
||||
i:0g/h to use relative path<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,8 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<body>
|
||||
<ul>
|
||||
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,92 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
|
||||
<link rel="stylesheet" href="../style.css#" type="text/css" />
|
||||
<title>加速访问国外网站</title>
|
||||
<script type="text/javascript">
|
||||
function findLang(){
|
||||
let href = location.href;
|
||||
for(let i=href.length-1;i>0;i--){
|
||||
if('/'==href.charAt(i) && '/'==href.charAt(i-3))
|
||||
return i;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
function nav2(page){
|
||||
let i = findLang();
|
||||
location.href = location.href.substring(0,i+1)+page;
|
||||
}
|
||||
function nav2Lang(lang){
|
||||
let i = findLang();
|
||||
let href = location.href;
|
||||
location.href = location.href.substring(0,i-2)+lang+location.href.substring(i);
|
||||
}
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
<header class='header'>
|
||||
<a class="logo" href="javascript:void(0)" onclick="return nav2('index.html#')">Home</a> <a class="logo" href="javascript:void(0)" onclick="return nav2('tags/index.html#')">Tags</a>
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">加速访问国外网站
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
<li><a href="../tags/%e4%b8%8d%e8%89%af%e4%bf%a1%e6%81%af%e5%b1%8f%e8%94%bd/index.html#">不良信息屏蔽</a> </li>
|
||||
|
||||
<li><a href="../tags/%e5%9b%bd%e5%a4%96%e7%bd%91%e5%9d%80/index.html#">国外网址</a> </li>
|
||||
|
||||
</ul>
|
||||
<p>不少国外网站本身虽可访问,但由于网站需要下载其它网址的资源而导致无法访问。根域名屏蔽可屏蔽文件中域名的一切子域名、孙域名、......,从而主动排除这些网址,最终允许浏览器快速访问。</p>
|
||||
<p>使用Android端<a href="../zh/">uweb浏览器</a>。<br>
|
||||
域名文件内容如下:<br>
|
||||
googleadservices.com<br>
|
||||
googlesyndication.com<br>
|
||||
adsense.com<br>
|
||||
googleapis.com<br>
|
||||
google-analytics.com<br>
|
||||
googletagservices.com<br>
|
||||
twitter.com<br>
|
||||
facebook.com<br>
|
||||
fbcdn.net</p>
|
||||
<p>其它国外网址访问技巧:</p>
|
||||
<ul>
|
||||
<li>尝试关闭javascript, 譬如程序员网站stackoverflow.com在关闭javascript的情况下国内一般均可快速访问。</li>
|
||||
<li>关闭网页图片</li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 24 September 2022<br>
|
||||
reorg for multi-languages<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
|
||||
<script id='jsgiscus'
|
||||
src='https://giscus.app/client.js'
|
||||
data-repo="torappinfo/uweb"
|
||||
data-repo-id="MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
|
||||
data-category="Announcements"
|
||||
data-category-id="DIC_kwDOEgNLGc4CQjsh"
|
||||
data-mapping="title"
|
||||
data-strict="0"
|
||||
data-reactions-enabled="1"
|
||||
data-emit-metadata="0"
|
||||
data-input-position="top"
|
||||
data-theme="light"
|
||||
data-lang="en"
|
||||
data-loading="lazy"
|
||||
crossorigin="anonymous" async>
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue