mirror of https://github.com/torappinfo/uweb
reorg
parent
4b66fe2881
commit
21e0757831
@ -1,8 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<body>
|
||||
<ul>
|
||||
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
@ -1,89 +0,0 @@
|
||||
<!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>
|
@ -1,111 +0,0 @@
|
||||
<!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>
|
@ -1,117 +0,0 @@
|
||||
<!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>
|
@ -1,116 +0,0 @@
|
||||
<!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>
|
@ -1,97 +0,0 @@
|
||||
<!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>
|
@ -1,8 +0,0 @@
|
||||
<!doctype html>
|
||||
<html>
|
||||
<body>
|
||||
<ul>
|
||||
|
||||
</ul>
|
||||
</body>
|
||||
</html>
|
@ -1,115 +0,0 @@
|
||||
<!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>
|
@ -1,104 +0,0 @@
|
||||
<!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>
|
@ -1,91 +0,0 @@
|
||||
<!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>
|
@ -1,82 +0,0 @@
|
||||
<!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>
|
@ -1,79 +0,0 @@
|
||||
<!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>
|
@ -1,88 +0,0 @@
|
||||
<!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,129 @@
|
||||
<!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">
|
||||
|
||||
</ul>
|
||||
<h3 id="mirrors-clickable-with-uweb-browser">Mirrors (clickable with uweb browser)</h3>
|
||||
<p><a href="i:0mi:5h:https://gitee.com/jamesfengcao/uweb/raw/master/redirect.html">试验1</a><br>
|
||||
<a href="i:0m?:https://gitcode.net/uweb/uweb/-/raw/master/redirect.html">2</a><br>
|
||||
<a href="i:0m?:https://raw.gitcode.com/uweb/uweb/raw/master/redirect.html">4</a><br>
|
||||
<a href="i:0m?:https://gitea.com/torappinfo/uweb/raw/branch/master/redirect.html">5</a><br>
|
||||
<a href="i:0mi:5h?format=raw::https://sourceforge.net/p/uwebbrowser/code/ci/master/tree/redirect.html">6</a><br>
|
||||
<a href="i:0mi:5h?format=raw::https://rocketgit.com/user/torappinfo/uweb/source/tree/branch/master/blob_download/redirect.html">7</a><br>
|
||||
<a href="i:0m?:https://notabug.org/torappinfo/uweb/raw/master/redirect.html">8</a><br>
|
||||
<a href="i:0mi:5h:https://git.launchpad.net/uweb/plain/redirect.html">9</a><br>
|
||||
<a href="i:0m?:https://framagit.org/torappinfo/uweb/-/raw/master/redirect.html">10</a><br>
|
||||
<a href="i:0m?:https://agit.ai/jamesfengcao/uweb/raw/branch/master/redirect.html">11</a><br>
|
||||
<a href="i:0m?:https://git.froggi.es/jamesfengcao/uweb/raw/branch/master/redirect.html">12</a><br>
|
||||
<a href="i:0m?:https://git.disroot.org/torappinfo/uweb/raw/branch/master/redirect.html">13</a><br>
|
||||
<a href="i:0m?:https://gitdab.com/jamesfengcao/uweb/raw/branch/master/redirect.html">14</a><br>
|
||||
<a href="i:0mi:5h/xxxx/?path=::https://dev.azure.com/jamesfengcao/1d8bf6c7-7c24-4441-bc5e-9709dcaf37fc/_apis/git/repositories/2a588d9b-f25a-46c0-bb3b-f685c635fcf8/itemsxxxx/redirect.html">15</a><br>
|
||||
<a href="i:0mi:5h:https://pagure.io/uweb/raw/master/f/redirect.html">16</a><br>
|
||||
<a href="i:0m?:https://bitbucket.org/torappinfo/torappinfo.bitbucket.io/raw/master/redirect.html">17</a><br>
|
||||
<a href="i:0mi:5h:https://fastly.jsdelivr.net/gh/torappinfo/uweb/redirect.html">18</a><br>
|
||||
<a href="i:0m?:https://dagshub.com/torappinfo/uweb/raw/master/redirect.html">19</a><br>
|
||||
<a href="i:0mi:5h:https://gitgud.io/jamesfengcao/uweb/-/raw/master/redirect.html">20</a><br>
|
||||
<a href="i:0m?:https://gitly.org/jamesfengcao/uweb/raw/master/redirect.html">gitly</a><br>
|
||||
<a href="i:0m?:https://gitnet.fr/jamesfengcao/uweb/raw/branch/master/redirect.html">gitnet</a><br>
|
||||
<a href="i:0m?:https://repo.palemoon.org/jamesfengcao/uweb/raw/branch/master/redirect.html ">palemoon</a><br>
|
||||
<a href="i:0m?:https://tildegit.org/jamesfengcao/uweb/raw/branch/master/redirect.html">tilde</a><br>
|
||||
<a href="i:0m?:https://git.dotclear.org/jamesfengcao/uweb/raw/branch/master/redirect.html">dotclear</a><br>
|
||||
<a href="i:0m?:https://git.minetest.land/jamesfengcao/uweb/raw/branch/master/redirect.html ">minetest</a><br>
|
||||
<a href="i:0m?:https://forge.chapril.org/jamesfengcao/uweb/raw/branch/master/redirect.html">chapril</a><br>
|
||||
<a href="i:0m?:https://git.cryto.net/jamesfengcao/uweb/raw/branch/master/redirect.html ">cryto</a><br>
|
||||
<a href="i:0m?:https://code.antopie.org/jamesfengcao/uweb/raw/branch/master/redirect.html">antopie</a></p>
|
||||
<h3 id="repositories">Repositories</h3>
|
||||
<p><a href="https://gitlab.com/jamesfengcao/uweb">gitlab</a><br>
|
||||
<a href="https://sourceforge.net/p/uwebbrowser">sourceforge</a><br>
|
||||
<a href="https://github.com/torappinfo/uweb">github</a><br>
|
||||
<a href="https://bitbucket.org/torappinfo/torappinfo.bitbucket.io">bitbucket</a><br>
|
||||
<a href="https://codeberg.org/jamesfengcao/pages/src/branch/master/README.md">codeberg</a><br>
|
||||
<a href="https://gitee.com/jamesfengcao/uweb">gitee</a><br>
|
||||
<a href="https://gitcode.com/uweb/uweb/overview">gitcode</a><br>
|
||||
<a href="https://gitcode.net/uweb/uweb">gitcode</a><br>
|
||||
<a href="https://atomgit.com/jamesfengcao/uweb">atomgit</a><br>
|
||||
<a href="https://www.gitlink.org.cn/jamesfengcao/uweb">gitlink</a><br>
|
||||
<a href="https://gitgud.io/jamesfengcao/uweb">gitgud</a><br>
|
||||
<a href="https://git.disroot.org/torappinfo/uweb/src/branch/master/README.md">disroot</a><br>
|
||||
<a href="https://gitea.com/torappinfo/uweb/src/branch/master/README.md">gitea</a><br>
|
||||
<a href="https://notabug.org/torappinfo/uweb/src/master/README.md">notabug</a><br>
|
||||
<a href="https://framagit.org/torappinfo/uweb">framagit</a><br>
|
||||
<a href="https://agit.ai/jamesfengcao/uweb/src/branch/master/README.md">agit</a><br>
|
||||
<a href="https://git.froggi.es/jamesfengcao/uweb/src/branch/master/README.md">froggi</a><br>
|
||||
<a href="https://gitdab.com/jamesfengcao/uweb/src/branch/master/README.md">gitdab</a><br>
|
||||
<a href="https://pagure.io/uweb/blob/master/f/README.md">pagure</a><br>
|
||||
<a href="https://dagshub.com/torappinfo/uweb/src/master/README.md">dagshub</a><br>
|
||||
<a href="https://gitnet.fr/jamesfengcao/uweb/src/branch/master/README.md">gitnet</a><br>
|
||||
<a href="https://repo.palemoon.org/jamesfengcao/uweb/src/branch/master/README.md">palemoon</a><br>
|
||||
<a href="https://tildegit.org/jamesfengcao/uweb/src/branch/master/README.md">tilde</a><br>
|
||||
<a href="https://git.dotclear.org/jamesfengcao/uweb/src/branch/master/README.md">dotclear</a><br>
|
||||
<a href="https://git.minetest.land/jamesfengcao/uweb/src/branch/master/README.md">mimetest</a><br>
|
||||
<a href="https://forge.chapril.org/jamesfengcao/uweb/src/branch/master/README.md">chapril</a><br>
|
||||
<a href="https://git.cryto.net/jamesfengcao/uweb/src/branch/master/README.md">cryto</a><br>
|
||||
<a href="https://code.antopie.org/jamesfengcao/uweb/src/master/README.md">antopie</a></p>
|
||||
|
||||
</div>
|
||||
<p>Last Modified: 2 April 2024<br>
|
||||
mv mirrors to unlist/<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>
|
@ -1,92 +0,0 @@
|
||||
<!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>
|
@ -1,128 +0,0 @@
|
||||
<!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</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
|
||||
<br>
|
||||
<span class="subtitle"></span>
|
||||
</h1>
|
||||
<ul class="tags">
|
||||
|
||||
<li><a href="../tags/termux">termux</a> </li>
|
||||
|
||||
<li><a href="../tags/ssh">ssh</a> </li>
|
||||
|
||||
<li><a href="../tags/PC">PC</a> </li>
|
||||
|
||||
<li><a href="../tags/clipboard">clipboard</a> </li>
|
||||
|
||||
<li><a href="../tags/Windows">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 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="../index.html">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: 25 May 2023<br>
|
||||
rework cf/redirect.js<br>
|
||||
<pre></pre>
|
||||
</p>
|
||||
<script>
|
||||
if(location.href.indexOf("/zh/")>0){
|
||||
var script = document.createElement("script");
|
||||
script.type = "text/javascript";
|
||||
script.src = "../../js/gissues.js";
|
||||
script.setAttribute("repo","jamesfengcao/uweb");
|
||||
script.setAttribute("issue-term","title");
|
||||
script.setAttribute("theme","github-light");
|
||||
script.async = true;
|
||||
document.body.appendChild(script);
|
||||
}
|
||||
</script>
|
||||
<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>
|
@ -1,125 +0,0 @@
|
||||
<!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>
|
@ -1,103 +0,0 @@
|
||||
<!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>
|
@ -1,94 +0,0 @@
|
||||
<!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>
|
@ -1,595 +0,0 @@
|
||||
/* 头部分 */
|
||||
|
||||
#head {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 4rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
backdrop-filter: blur(10px);
|
||||
background-color: #ffffff78;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
#head-img-div {
|
||||
height: 100%;
|
||||
display: flex;
|
||||
justify-content: flex-start;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
#head-img-div>img {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#head-img-div-h2-img>* {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
#head-li-div {
|
||||
margin-right: 2rem;
|
||||
}
|
||||
|
||||
|
||||
/* 背景*/
|
||||
|
||||
#background {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
z-index: -1;
|
||||
background: repeating-linear-gradient(359deg, rgb(182 196 255) 0%, rgb(207 225 255 / 78%) 100%);
|
||||
transition: filter 1s;
|
||||
}
|
||||
|
||||
#background.a {
|
||||
filter: hue-rotate(10deg);
|
||||
}
|
||||
|
||||
#background.b {
|
||||
filter: hue-rotate(-5deg);
|
||||
}
|
||||
|
||||
#background.c {
|
||||
filter: hue-rotate(-20deg);
|
||||
}
|
||||
|
||||
|
||||
/* 尾部分 */
|
||||
|
||||
#tail {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
height: 7rem;
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
backdrop-filter: blur(10px);
|
||||
background-color: #ffffff78;
|
||||
flex-direction: column-reverse;
|
||||
align-items: center;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
#SearchSuggestions {
|
||||
position: fixed;
|
||||
top: -3rem;
|
||||
display: flex;
|
||||
flex-wrap: nowrap;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
width: 100%;
|
||||
transition: opacity 0.2s
|
||||
}
|
||||
|
||||
#SearchSuggestions>a {
|
||||
backdrop-filter: blur(10px);
|
||||
background-color: #ffffff82;
|
||||
border-radius: 2rem;
|
||||
padding: 0.5rem;
|
||||
font-size: 0.9rem;
|
||||
margin: 0.2rem;
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
transition: flex 0.5s;
|
||||
}
|
||||
|
||||
#SearchSuggestions>a:hover {
|
||||
cursor: pointer;
|
||||
background-color: #ffffff;
|
||||
flex: none;
|
||||
}
|
||||
|
||||
#tail-in {
|
||||
display: flex;
|
||||
width: 80%;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
height: 80%;
|
||||
}
|
||||
|
||||
|
||||
#restart:hover ,
|
||||
#restartNewChat:hover
|
||||
{
|
||||
background-color: #ffffff;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#restart ,
|
||||
#restartNewChat
|
||||
{
|
||||
border: 0;
|
||||
border-radius: 1.5rem;
|
||||
background-color: #ffffff9e;
|
||||
height: 100%;
|
||||
font-size: 0.8rem;
|
||||
transition: all 0.5s;
|
||||
overflow: hidden;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
#restart {
|
||||
width: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
body:has(.my) #restart {
|
||||
width: 5rem;
|
||||
margin-right: 0.5rem;
|
||||
padding: 0;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
#restartNewChat{
|
||||
width: 5rem;
|
||||
margin-right: 0.5rem;
|
||||
}
|
||||
|
||||
#restartNewChat.onShow{
|
||||
width: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
#send {
|
||||
border: 0;
|
||||
margin: 0 1rem 1rem 0;
|
||||
border-radius: 2rem;
|
||||
background-color: #005fff38;
|
||||
height: 1.8rem;
|
||||
font-size: 0.8rem;
|
||||
cursor: pointer;
|
||||
min-width: 3rem;
|
||||
transition: all 0.5s;
|
||||
}
|
||||
|
||||
#send:hover {
|
||||
background-color: #005fff80;
|
||||
}
|
||||
|
||||
#input {
|
||||
border: none;
|
||||
resize: none;
|
||||
outline: none;
|
||||
width: 100%;
|
||||
background-color: #ffffff00;
|
||||
margin: 1rem 0 1rem 1rem;
|
||||
height: -webkit-fill-available;
|
||||
}
|
||||
|
||||
#input:focus-visible {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
#input-div {
|
||||
border-radius: 1.5rem;
|
||||
flex: 1;
|
||||
height: 100%;
|
||||
background-color: #ffffff;
|
||||
margin: 0 0;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
align-items: flex-end;
|
||||
transition: all 0.5s;
|
||||
}
|
||||
|
||||
|
||||
/* 页面部分 */
|
||||
body {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
#body-top {
|
||||
height: 20vh;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
#body-bottom {
|
||||
height: 15rem;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
||||
/* 聊天选项部分 */
|
||||
|
||||
#chatTypeDiv {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-wrap: nowrap;
|
||||
margin-bottom: 7rem;
|
||||
transition: all 0.5s;
|
||||
}
|
||||
|
||||
#chatTypeDiv>.chatTypeChose {
|
||||
background-color: #ffffffcc;
|
||||
border-radius: 2rem;
|
||||
width: 9rem;
|
||||
height: 4rem;
|
||||
margin: 1rem 0.3rem;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
border: 0.5rem solid #ffffffcc;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
#chatTypeDiv>.chatTypeChose>p {
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#chatTypeDiv>.chatTypeChose>h3 {
|
||||
margin: 0;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
#chatTypeChoseCreate.Chose {
|
||||
background-color: #904887;
|
||||
color: white;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
#chatTypeChoseBalance.Chose {
|
||||
background-color: #2870EA;
|
||||
color: white;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
#chatTypeChoseAccurate.Chose {
|
||||
background-color: #006880;
|
||||
color: white;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
|
||||
/* 聊天部分,在页面内 */
|
||||
@keyframes acceptMeaaage {
|
||||
from {
|
||||
margin-top: 1em;
|
||||
margin-left: -4em;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {}
|
||||
}
|
||||
|
||||
@keyframes sendMeaaage {
|
||||
from {
|
||||
margin-top: 1em;
|
||||
margin-right: -4em;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {}
|
||||
}
|
||||
|
||||
.bing,
|
||||
.my {
|
||||
margin-bottom: 2rem;
|
||||
}
|
||||
|
||||
.bing {
|
||||
display: grid;
|
||||
justify-items: start;
|
||||
}
|
||||
|
||||
.bing>* {
|
||||
animation: acceptMeaaage 0.5s;
|
||||
}
|
||||
|
||||
.my>* {
|
||||
animation: sendMeaaage 0.5s;
|
||||
}
|
||||
|
||||
.my {
|
||||
text-align: right;
|
||||
font-size: 1.3rem;
|
||||
}
|
||||
|
||||
.InternalSearchQuery,
|
||||
.InternalLoaderMessage {
|
||||
margin-left: 1rem;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.InternalSearchQuery>p,
|
||||
.InternalLoaderMessage>p {
|
||||
margin: 0;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.adaptiveCardsFatherDIV,
|
||||
.my>.bobo {
|
||||
display: inline-block;
|
||||
background-color: #ffffff;
|
||||
border-radius: 1rem;
|
||||
padding: 1rem 1rem;
|
||||
max-width: 85vw;
|
||||
margin-bottom: 1rem;
|
||||
text-align: left;
|
||||
}
|
||||
|
||||
.adaptiveCardsFatherDIV .throttling {
|
||||
text-align: end;
|
||||
font-size: 0.4rem;
|
||||
margin-top: 0.5rem;
|
||||
margin-bottom: -0.8rem;
|
||||
border-top: 1px solid #0000005c;
|
||||
}
|
||||
|
||||
.bing>.sourceAttributions {
|
||||
font-size: 0.9rem;
|
||||
max-width: 85vw;
|
||||
margin: 0;
|
||||
margin-bottom: 1rem;
|
||||
display: inline-flex;
|
||||
flex-direction: row;
|
||||
flex-wrap: nowrap;
|
||||
align-items: center;
|
||||
background-color: #ffffff57;
|
||||
border-radius: 2rem;
|
||||
padding: 0.5rem;
|
||||
}
|
||||
|
||||
.bing:has(.sourceAttributions) .adaptiveCardsFatherDIV {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
|
||||
.bing>.sourceAttributions>a {
|
||||
display: inline-block;
|
||||
background-color: #ffffff73;
|
||||
border-radius: 1rem;
|
||||
padding: 0.5rem;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
white-space: nowrap;
|
||||
margin: 0.1rem;
|
||||
color: #000000;
|
||||
text-decoration: none;
|
||||
transition: flex 0.5s;
|
||||
}
|
||||
|
||||
.bing>.sourceAttributions>a:hover {
|
||||
background-color: #ffffffb3;
|
||||
flex: none;
|
||||
}
|
||||
|
||||
|
||||
/* 上标 */
|
||||
|
||||
#chat .superscript {
|
||||
display: inline-block;
|
||||
vertical-align: super;
|
||||
border: 0.1rem solid #0969da;
|
||||
border-radius: 1em;
|
||||
min-width: 1em;
|
||||
text-align: center;
|
||||
line-height: 1em;
|
||||
font-size: small;
|
||||
color: #0969da;
|
||||
}
|
||||
|
||||
#chat .superscript:hover {
|
||||
background-color: #00000024;
|
||||
}
|
||||
|
||||
/*暂时不知道如何解析的渲染卡片请求*/
|
||||
.RenderCardRequest {
|
||||
border-radius: 1em;
|
||||
background-color: white;
|
||||
overflow: auto;
|
||||
padding: 1em;
|
||||
width: 85vw;
|
||||
max-width: 1100px;
|
||||
}
|
||||
|
||||
.RenderCardRequest>iframe {
|
||||
min-width: 768px;
|
||||
width: 100%;
|
||||
height: 602px;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* 画图部分 */
|
||||
|
||||
.GenerateContentQuery {
|
||||
background-color: #ffffff;
|
||||
border-radius: 1rem;
|
||||
max-width: 85%;
|
||||
margin-bottom: 1rem;
|
||||
text-align: center;
|
||||
font-size: 1rem;
|
||||
padding: 1rem;
|
||||
overflow: hidden;
|
||||
display: inline-table;
|
||||
}
|
||||
|
||||
.GenerateContentQuery>img {
|
||||
max-width: 24%;
|
||||
margin: 0.5%;
|
||||
transition: all 0.8s;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.GenerateContentQuery>img:hover {
|
||||
margin: 0.2% 0.8% 0.8% 0.2%;
|
||||
box-shadow: #0000007a 2px 3px 5px 0px;
|
||||
transition: all 0.3s;
|
||||
}
|
||||
|
||||
|
||||
/* 错误部分 */
|
||||
|
||||
#chat .error {
|
||||
text-align: center;
|
||||
color: red;
|
||||
}
|
||||
|
||||
.NoPower {
|
||||
text-align: center;
|
||||
color: #ff6d00;
|
||||
cursor: pointer;
|
||||
margin: 1rem;
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
|
||||
/* 用于适配不同设备 */
|
||||
|
||||
|
||||
/* pc */
|
||||
|
||||
:root {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
div.markdown-body {
|
||||
font-size: 1rem;
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
|
||||
/* 窄窗口 */
|
||||
@media screen and (max-width:550px) {
|
||||
|
||||
#tail-in:has(#input:focus-visible) #restart,
|
||||
#tail-in:has(#input:hover) #restart,
|
||||
#tail-in:has(#input:focus-visible) #restartNewChat,
|
||||
#tail-in:has(#input:hover) #restartNewChat {
|
||||
width: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.GenerateContentQuery>img {
|
||||
max-width: 49%;
|
||||
width: 49%;
|
||||
}
|
||||
|
||||
#tail-in {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.bing>.sourceAttributions {
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
}
|
||||
|
||||
/*手机 css*/
|
||||
|
||||
@media screen and (orientation:portrait) and (max-device-width:800px) and (max-device-height:1000px) {
|
||||
:root {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
div.markdown-body {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.InternalSearchQuery,
|
||||
.InternalLoaderMessage {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
.InternalSearchQuery>p,
|
||||
.InternalLoaderMessage>p {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.bing>.sourceAttributions {
|
||||
max-width: 88vw;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
|
||||
.adaptiveCardsFatherDIV,
|
||||
.my>.bobo {
|
||||
max-width: 88vw;
|
||||
}
|
||||
|
||||
#tail-in {
|
||||
width: 90%;
|
||||
}
|
||||
|
||||
#restart {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
#input {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.GenerateContentQuery>img {
|
||||
max-width: 49%;
|
||||
width: 49%;
|
||||
}
|
||||
|
||||
#tail-in:has(#input:focus-visible) #restart,
|
||||
#tail-in:has(#input:hover) #restart,
|
||||
#tail-in:has(#input:focus-visible) #restartNewChat,
|
||||
#tail-in:has(#input:hover) #restartNewChat {
|
||||
width: 0;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
/* 聊天部分,在页面内 */
|
||||
@keyframes acceptMeaaage {
|
||||
from {
|
||||
margin-top: 1em;
|
||||
margin-left: 0em;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {}
|
||||
}
|
||||
|
||||
@keyframes sendMeaaage {
|
||||
from {
|
||||
margin-top: 1em;
|
||||
margin-right: 0em;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
to {}
|
||||
}
|
||||
}
|
@ -1 +0,0 @@
|
||||
{"clientTcpRtt":172,"longitude":"120.60200","latitude":"31.30930","tlsCipher":"AEAD-AES256-GCM-SHA384","continent":"AS","asn":4134,"clientAcceptEncoding":"br, gzip, deflate","country":"CN","tlsClientAuth":{"certIssuerDNLegacy":"","certIssuerSKI":"","certSubjectDNRFC2253":"","certSubjectDNLegacy":"","certFingerprintSHA256":"","certNotBefore":"","certSKI":"","certSerial":"","certIssuerDN":"","certVerified":"NONE","certNotAfter":"","certSubjectDN":"","certPresented":"0","certRevoked":"0","certIssuerSerial":"","certIssuerDNRFC2253":"","certFingerprintSHA1":""},"tlsExportedAuthenticator":{"clientFinished":"b7f5ebe4898f01fbdbf9b0a444e1edc7956472268f27576d15fe6e048855ae5fe9f514231998caf937773f6a53901960","clientHandshake":"44f40162794883f93892c883c4121ca289621ad38b27615555cc0f471283da68ad39a438b0e956abc6613792f5fb81de","serverHandshake":"d3ec250200a505c5bc98a049d3f63720e3baea922338e6f94d61a28d9dfed9c1078dc8fa74e83f6719938122e6887a85","serverFinished":"710a654a0cfdd69ce712c7464801d1661f5b797ddd3cccf7f78f4abbd34564ebb7e9c00282fe7923875226284bde9b67"},"tlsVersion":"TLSv1.3","city":"Suzhou","timezone":"Asia/Shanghai","colo":"SJC","region":"Jiangsu","requestPriority":"","botManagement":{"corporateProxy":false,"verifiedBot":false,"ja3Hash":"0cce74b0d9b7f8528fb2181588d23793","staticResource":false,"detectionIds":{},"score":2},"clientTrustScore":2,"httpProtocol":"HTTP/1.1","regionCode":"JS","asOrganization":"China Telecom","edgeRequestKeepAliveStatus":1}
|
@ -1,24 +0,0 @@
|
||||
import { serve } from "https://deno.land/std/http/server.ts";
|
||||
async function handler(req: Request): Promise<Response> {
|
||||
let url = req.url;
|
||||
let iSlash = url.indexOf('/',11);
|
||||
let nUrl = "https://www.bing.com/"+url.substring(iSlash+1);
|
||||
let fp = {
|
||||
method: req.method,
|
||||
headers: {}
|
||||
}
|
||||
let reqHeaders = new Headers(req.headers);
|
||||
let keepHeaders = ["cookie","user-agent","accept","accept-language"];
|
||||
let he = reqHeaders.entries();
|
||||
for (let h of he) {
|
||||
let key = h[0],
|
||||
value = h[1];
|
||||
if (keepHeaders.includes(key)) {
|
||||
fp.headers[key] = value;
|
||||
}
|
||||
}
|
||||
|
||||
return await fetch(nUrl, fp);
|
||||
}
|
||||
|
||||
serve(handler);
|
@ -1,102 +0,0 @@
|
||||
<!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>
|
@ -1,124 +0,0 @@
|
||||
<!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>
|
@ -1,32 +0,0 @@
|
||||
<!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>
|
@ -1,54 +0,0 @@
|
||||
<!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>
|
@ -1,54 +0,0 @@
|
||||
<!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>
|
@ -1,58 +0,0 @@
|
||||
<!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>
|
@ -1,58 +0,0 @@
|
||||
<!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>
|
@ -1,70 +0,0 @@
|
||||
<!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>
|
@ -1,60 +0,0 @@
|
||||
<!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/pc/index.xml" title="uweb browser: unlimited power">
|
||||
|
||||
<link rel="stylesheet" href="../style.css" type="text/css" />
|
||||
<title>PC</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>
|
||||
|
||||
|
||||
<a class="logo" href="index.xml">RSS</a>
|
||||
|
||||
<nav>
|
||||
</nav>
|
||||
</header>
|
||||
<br />
|
||||
|
||||
<div class="container">
|
||||
<h1 class="title">PC</h1>
|
||||
<ul class="posts">
|
||||
|
||||
<li class="post">
|
||||
<a href="../../textprocess/index.html">
|
||||
<span>Text selection/processing</span>
|
||||
</a>
|
||||
</li>
|
||||
|
||||
</ul>
|
||||
<ul>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
@ -1,27 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
|
||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
||||
<channel>
|
||||
<title>PC on uweb browser: unlimited power</title>
|
||||
<link>/en/tags/pc/</link>
|
||||
<description>Recent content in PC on uweb browser: unlimited power</description>
|
||||
<generator>Hugo -- gohugo.io</generator>
|
||||
<language>en</language>
|
||||
<lastBuildDate>Fri, 01 Dec 2023 00:00:00 +0000</lastBuildDate>
|
||||
<atom:link href="/en/tags/pc/index.xml" rel="self" type="application/rss+xml" />
|
||||
<item>
|
||||
<title>Text selection/processing</title>
|
||||
<link>/en/textprocess/</link>
|
||||
<pubDate>Fri, 01 Dec 2023 00:00:00 +0000</pubDate>
|
||||
<guid>/en/textprocess/</guid>
|
||||
<description>Click the following links to install menus for long pressing the button &quot;link&quot;:
|
||||
Copy selected text with html format to clipboard
|
||||
Search with home screen
|
||||
google Translate
|
||||
bing translate
|
||||
deepL
|
||||
The file &quot;default.select&quot; 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:
|
||||
[Name]:[mimetype]:[command line]
|
||||
[mimetype] specifies input/output for [command line].</description>
|
||||
</item>
|
||||
</channel>
|
||||
</rss>
|
@ -1,54 +0,0 @@
|
||||
<!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>
|
@ -1,54 +0,0 @@
|
||||
<!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>
|
@ -1,58 +0,0 @@
|
||||
<!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>
|
@ -1,58 +0,0 @@
|
||||
<!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>
|
@ -1,70 +0,0 @@
|
||||
<!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>
|
@ -1,58 +0,0 @@
|
||||
<!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>
|
@ -1,58 +0,0 @@
|
||||
<!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>
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue