2022-07-02 01:15:32 +00:00
<!doctype html>
< html >
< head >
< meta charset = "utf-8" >
< meta name = "viewport" content = "width=device-width, initial-scale=1" / >
2023-12-11 07:23:07 +00:00
2024-04-01 13:51:55 +00:00
< link rel = "stylesheet" href = "../style.css#" type = "text/css" / >
2022-07-02 01:15:32 +00:00
< title > Links< / title >
< script type = "text/javascript" >
2022-07-12 02:24:02 +00:00
function findLang(){
2022-07-02 01:15:32 +00:00
let href = location.href;
for(let i=href.length-1;i>0;i--){
if('/'==href.charAt(i) & & '/'==href.charAt(i-3))
2022-07-12 02:24:02 +00:00
return i;
2022-07-02 01:15:32 +00:00
}
2022-07-12 02:24:02 +00:00
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);
2022-07-02 01:15:32 +00:00
}
< / script >
< / head >
< body >
< header class = 'header' >
2024-04-02 05:42:43 +00:00
< 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 >
2022-07-12 02:24:02 +00:00
< a class = "logo" href = "javascript:void(0)" onclick = "return nav2Lang('zh')" > 简体中文< / a >
2022-07-02 01:15:32 +00:00
< nav >
< / nav >
< / header >
< br / >
< div class = "container" >
< h1 class = "title" > Links
< br >
< span class = "subtitle" > < / span >
< / h1 >
< ul class = "tags" >
< / ul >
2022-08-01 12:22:51 +00:00
< p > Click the following links to install menus popped by long pressing the bookmark button (with star as icon):< br >
2023-06-05 00:30:00 +00:00
< a href = "i:0gdefault.link::Capture::ccapture%0A" > Capture long screenshot< / a > (need < a href = "i:61:../searchurl/func.html" > long screenshot mode< / a > )< / p >
< p > < a href = "i:0gdefault.link:../searchurl/txt/link.cfg" > Select All:CTRL-A/undo:CTRL-Z/Redo:CTRL-Y< / a > < br >
2023-04-10 00:23:51 +00:00
< a href = "i:0gdefault.link::Extend cookies::0cc;Max-Age=315360000%0A" > Extend site cookies to 10 years< / a > < br >
< a href = "i:0gdefault.link::Clear cookies::0cc;Max-Age=0%0A" > Clear site cookies< / a > < / p >
2023-02-14 08:55:34 +00:00
< p > < a href = "i:0gdefault.link::vpn:i:1dandroid.net.vpn.SETTINGS:::%0A" > VPN< / a > < / p >
2023-02-12 14:03:54 +00:00
< p > < a href = "i:0gdefault.link::profile_config::cprofile . files .conf%0A" > Switch configuration< / a > < / p >
< p > < a href = "i:0gdefault.link::Wait msg:i:1w%0A" > Wait for network msg< / a > < / p >
< p > < a href = "i:0gdefault.link::Certificate info:i:1c%0A" > Certificate info< / a > < / p >
2023-01-22 09:27:29 +00:00
< p > < a href = "i:0gdefault.link::Backup2Box: {let path=`%f`;let iSlash=path.lastIndexOf('/',path.length-2);let f;if('/'!=path[path.length-1])f=path.substring(iSlash+1);else f=path.substring(iSlash+1,path.length-1);location.href='i:0e'+path+':https://dav.box.com/dav/'+f+'.tgz';}%0A" > Backup to box.com< / a > < / p >
< p > < a href = "i:0gdefault.link::restoreFromBox: {let path=`%f`;let iSlash=path.lastIndexOf('/',path.length-2);let f;if('/'!=path[path.length-1])f=path.substring(iSlash+1);else f=path.substring(iSlash+1,path.length-1);location.href='i:0dhttps://dav.box.com/dav/'+f+'.tgz';}%0A" > Restore from box.com< / a > < / p >
2023-01-19 09:38:17 +00:00
< p > < a href = "i:0gdefault.link::up2Box: {let path=`%f`;let iSlash=path.lastIndexOf('/',path.length-2);let f;if('/'!=path[path.length-1])f=path.substring(iSlash+1);else f=path.substring(iSlash+1,path.length-1)+'.tgz';location.href='i:0u'+path+':https://dav.box.com/dav/'+f;}%0A" > upload to box.com< / a > < / p >
2023-01-22 09:27:29 +00:00
< p > < a href = "../searchurl/webdav.html" > More webdav link menu items< / a > < / p >
2022-07-09 00:45:17 +00:00
< p > < a href = "i:0gdefault.link::web fullscreen: location.href='i:5fsetTimeout(()=>document.documentElement.requestFullscreen(),50);';%0A" > Web fullscreen< / a > < / p >
2024-04-02 11:38:45 +00:00
< p > Long pressing the bookmark button in < a href = "../index.html#" > uweb browser< / a > will popup menus defined in file " default.link" . The file format is as follows:< br >
2023-02-03 09:06:25 +00:00
[Menu name]:[one or more links delimited by " \n " ]< / p >
< p > and each link has the following format:< br >
[url][space][javascript code]< / p >
2024-04-02 11:38:45 +00:00
< p > in which space and later parts are optional. url and later parts support < a href = "../cmd/index.html#" > " %u" ," %s" etc.< / a > . The javascript code will be executed after url is fully loaded.< / p >
2022-07-02 01:15:32 +00:00
< p > url supports all standard scheme (http(s):,javascript: etc.) and uweb internal schemes ( ':' as second character in the url ) and special links that begins with ':'.< / p >
< p > uweb browser will handle local file urls (file:///) specially for some file types: < / p >
< ul >
2024-04-02 11:38:45 +00:00
< li > .js file(same as < a href = "../longclick/index.html#" > long pressing hypertext to execute js file< / a > ): If the " .js" file begins with " //" , then uweb browser will load the site following " //" and execute the following js code.< / li >
2022-07-02 01:15:32 +00:00
< / ul >
2023-11-04 13:01:19 +00:00
< p > If the above mentioned [links] part is malformated, then it is auto detected as html or text.< / p >
2024-04-02 11:38:45 +00:00
< p > < a href = "../gesture/index.html#" > default.gesture< / a > and default.button have the exactly same file format. " .gesture" files define gestures while " .button" define bottom toolbar button pressing actions from the last button to the first.< / p >
2022-07-02 01:15:32 +00:00
< p > proxy config:< br >
httpproxy::010[proxy host]:[port]< br >
socks5::011[socks host]:[port]< br >
noproxy::010:< / p >
< h3 id = "special-links-beginning-with-" > special links beginning with ':'< / h3 >
< ul >
< li >
< p > :0003< br >
Toggle fullscreen mode< / p >
< / li >
< li >
< p > :0004< br >
Rotate the screen< / p >
< / li >
< li >
< p > :001[fileurl]< br >
Scan the fileurl and add it to media storage< / p >
< / li >
< li >
< p > :010[proxy host]:[port]< br >
Config http proxy, " :010:" to disable any proxy.< / p >
< / li >
< li >
< p > :011[socks host]:[port]< br >
Socks proxy< / p >
< / li >
2023-04-01 07:15:10 +00:00
< li >
2023-04-10 00:23:51 +00:00
< p > :0cc[url1]:[url2][:;[cookie attributes]]< br >
cookie copy from url1 to url2, the last part " [:;[cookie attributes]]" is optionable.< / p >
2023-04-01 07:15:10 +00:00
< / li >
2022-07-02 01:15:32 +00:00
< / ul >
2022-12-08 08:15:22 +00:00
< h4 id = "commands" > commands< / h4 >
< ul >
2023-01-09 00:03:02 +00:00
< li >
< p > :![command line]< 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 >
2023-01-08 01:16:44 +00:00
< p > For regular (non-js) executables, the standard output of the command line will be treated as lines of web urls.< / p >
2023-01-13 10:00:48 +00:00
< p > < a href = "i:0hs.sh:../searchurl/txt/web.sh" > Click to install the example file " s.sh" < / a > < br >
< a href = "i:0h.js:../searchurl/txt/web.js" > Click to install the example file " .js" < / a > < / p >
2023-01-09 00:03:02 +00:00
< / li >
< li >
2023-02-12 14:03:54 +00:00
< p > :c[command]< / p >
< ul >
< li > close< br >
" :cclose" to close the current window/tab.< / li >
< li > profile [parent folder] [file/folder] [optional ID]< br >
Ex. " :cprofile . files" to switch configurations< / li >
< / ul >
< / li >
< li >
2023-01-09 00:03:02 +00:00
< p > :p [width in milliInch]x[height] [top margin]:[right margin]:[bottom margin]:[left margin]< br >
2022-12-11 01:23:44 +00:00
Generate/Print PDF file in the " /sdcard/Download" folder, all units are milliinch.< br >
2022-12-12 04:23:02 +00:00
Ex. " :p x" or " :px" for screen width and infinite height (as long vector screenshot).< br >
2023-01-09 00:03:02 +00:00
" :p x[height]" or " :px[height]" for screen width.< / p >
< / li >
2022-12-08 08:15:22 +00:00
< / ul >
2022-07-02 01:15:32 +00:00
< h3 id = "i-internal-links" > " i:" internal links:< / h3 >
< ul >
2022-10-21 22:47:01 +00:00
< li >
< p > i:0b[path]:[url]< br >
Extract remote content (tar/tgz/zip) under the folder [path]. If [path] ends with " /" , then put unzipped file under the folder " [path]/[file name stem]" (for zipped files only, not for tar/tgz).< / p >
< / li >
< li >
2023-03-03 22:57:28 +00:00
< p > i:0m[bookmarklet index|prefix|?postfix|/.../localfile|H[headers]|c[cssFlag]]:[url]< br >
2022-10-21 22:47:01 +00:00
Visiting url and execute the uweb browser internal bookmarklet that keeps valid for all urls under the path of [url].< / p >
2022-09-06 09:48:18 +00:00
< ul >
2023-01-09 00:03:02 +00:00
< li > [bookmarklet index] must have two/three digits. The first two digits are used as index of bootmarklet. For example, " 00" as the first local bookmarklet; " 01" as the first remote script; then " 02" as the second local bookmarklet, ... The third digit is uplevel, 1 to make bookmarklet valid for parent path of [url].< / li >
< li > c[cssFlag]: For example, " c12" will apply the third and fourth global CSS (12=2^2+2^3).< / li >
2023-03-03 22:57:28 +00:00
< li > H[headers]: Ex. " HX-Forwarded-For;8.8.8.8" adds extra http request header " X-Forwarded-For:8.8.8.8" .< / li >
2023-01-09 00:03:02 +00:00
< li > [?postfix]: the real visited url is " [url]+[?postfix]" .< / li >
< li > [/.../localfile]: load the local html/js file that processes [url]. The first character of the local html file must be " < " .< / li >
< li > All other cases will be treated as [prefix], the real visited url is " [prefix]+[url]" .< / li >
2024-04-02 11:38:45 +00:00
< li > Since < a href = "../rjs/index.html#" > activated scripts< / a > use internal mechanism of " i:0m" urls, the script itself cannot have 'H', '?' as its very first character.< / li >
2023-01-09 00:03:02 +00:00
< / ul >
2022-07-02 01:15:32 +00:00
< / li >
< li >
< p > i:15[string]< br >
Set address bar text to be [string].< / p >
< / li >
< li >
< p > i:16[mimetype]:[Action Name]:[App Name]:[Activity Name]< br >
Use third party app as input< / p >
< / li >
< li >
< p > i:18[extended mimetype]:[range]:[url]< br >
Read partial data from url.< br >
< range > : the format is same as related http header, such as " 500-1000,-300" .< br >
< extended mimetype > : standard mimetype or mimetype followed by " .< filename > " . In the later case, the file in uweb configuration folder will be appended to the fetched data.< / p >
< / li >
< li >
< p > i:19[string]< br >
Append [string] to the address bar text.< / p >
< / li >
< li >
2023-02-12 14:03:54 +00:00
< p > i:1c< br >
2022-07-02 01:15:32 +00:00
Show web certificate.< / p >
< / li >
< li >
2023-02-12 14:03:54 +00:00
< p > i:1d< action > :< type > :< Category > :< data > < br >
Launch app for specific < action > .< / p >
2022-07-02 01:15:32 +00:00
< / li >
< li >
2023-02-12 14:03:54 +00:00
< p > i:1w< br >
Wait to receive url from the network and open the url.< / p >
2022-07-02 01:15:32 +00:00
< / li >
< li >
2023-02-12 14:03:54 +00:00
< p > i:1w1< br >
Wait to receive url from the network and open the url (not showing ip)< / p >
2022-08-17 03:16:49 +00:00
< / li >
< li >
2022-10-12 09:43:25 +00:00
< p > i:1e< br >
Open file manager for removable SDCARD download folder< / p >
< / li >
< li >
2022-07-02 01:15:32 +00:00
< p > i:50[path]:[string]< br >
Save [string] as file< / p >
< / li >
< li >
< p > i:51[path]:[url]< br >
Save [url] to " .autoc" file.< / p >
< / li >
< li >
< p > i:52[path]:[url]< br >
Save bookmark.< / p >
< / li >
< li >
< p > i:53[path]:[string]< br >
Save notes.< / p >
< / li >
< li >
< p > i:54[path]:[url]< br >
Save as search engine.< / p >
< / li >
< li >
< p > i:55[path]:[url]< br >
Save as link.< / p >
< / li >
< li >
< p > i:56[string]< br >
2023-03-22 11:03:02 +00:00
Use [string] as user input on web page.< br >
The string can have any character such as ascii code 0-26, where code 0 means clear, and code 1-26 are from ctrl-A to ctrl-Z as shortcut keys. (to type " Ctrl-A" into a text file, use " Ctrl-Q Ctrl-A" with emacs or " Ctrl-V Ctrl-A" with vim)< / p >
2022-07-02 01:15:32 +00:00
< / li >
< li >
< p > i:57[jscode]< br >
execute [jscode], even when js is disabled for the web page.< / p >
< / li >
< li >
< p > i:58[url]< br >
Save to the desktop.< / p >
< / li >
< li >
< p > i:5a[filename]< br >
Receive content from network to the file.< / p >
< / li >
< li >
< p > i:5b[string]< br >
Copy [string] to the clipboard.< / p >
< / li >
< li >
< p > i:5c[url]< br >
Change auto page turning internal url to be [url].< / p >
< / li >
< li >
< p > i:5d[file url]< br >
Open the file url compatible to other browsers.< / p >
< / li >
< li >
< p > i:5e[string]< br >
TTS< / p >
< / li >
< li >
< p > i:5f[videourl]< br >
play video fullscreen. if videourl is empty, then make following requestFullscreen() work.< / p >
< / li >
< li >
2022-09-18 09:19:25 +00:00
< p > i:5h[?postfix:|/regex/replacement:][url]< br >
force html for [url] visiting< / p >
< ul >
< li > [?postfix:] : the real url visited is " [url]+[?postfix]" < / li >
< li > [/regex/replacement:]: execute regular expression replacement for the " [url]" , then visit the resulting url.< / li >
< / ul >
2022-07-02 01:15:32 +00:00
< / li >
< li >
< p > i:5i[url]< br >
2022-10-17 15:23:29 +00:00
Use the existing tab for the url with possible different url hash part.< / p >
2022-07-02 01:15:32 +00:00
< / li >
< li >
< p > i:5j[string]< br >
2022-08-25 02:40:29 +00:00
if [string] is file url, then send the file/folder to network, otherwise send [string] to network.< / p >
2022-07-02 01:15:32 +00:00
< / li >
< li >
2022-10-26 14:43:36 +00:00
< p > i:5p[videourl]< br >
play video in external player< / p >
< / li >
< li >
2022-07-02 01:15:32 +00:00
< p > i:60[path]:[url]< br >
If existing local file, then open it or visit the [url].< / p >
< / li >
< li >
< p > i:62[path]:[js code]< br >
Evaluate the [js code] and save the returned string to file.< / p >
< / li >
< li >
< p > i:63[bookmarklet index]:[url]< br >
Visiting url and execute the bookmarklet. Only uweb predefined local bookmarlets are allowed.< / p >
< / li >
< li >
2022-10-17 15:23:29 +00:00
< p > i:6i[js file path relative to configuration folder]:[url]< br >
Similar to i:5i, except executing the js file after possible url hash change.< / p >
< / li >
< li >
2022-07-02 01:15:32 +00:00
< p > i:70[url]:[auto page turning url]< br >
Visiting [url], but use the second url as auto paging url.< / p >
< / li >
2023-03-20 03:57:14 +00:00
< li >
2023-06-17 08:03:34 +00:00
< p > i:8d[url]< br >
Force downloading [url]< / p >
< / li >
< li >
2023-06-02 02:07:46 +00:00
< p > i:8l[filename]< br >
Loading configuration [filename]. Ex. " i:8lconfig.html" to reload config.html.< / p >
< / li >
< li >
2023-03-20 03:57:14 +00:00
< p > i:92[http request headers separated by ';']:[url]< br >
The " Host" Header (fake header, different from the standard) must be the first header.< br >
Ex. i:92Host;209.216.230.240:https://news.ycombinator.com< br >
use " i:0mi:92Host;209.216.230.240::https://news.ycombinator.com" to visit the site with specified IP address.< / p >
< / li >
2023-04-18 08:08:42 +00:00
< li >
2023-06-01 13:46:11 +00:00
< p > i:b1[internal urls or javascript separated by " %0A" ]< br >
2023-04-18 08:08:42 +00:00
Bundle of internal urls, if it is an " i:0" url, then it should have the following format:< br >
2023-06-01 13:46:11 +00:00
[title]%0A[msg]%0A[optional callback url%0A][i:0url].< / p >
2023-04-18 08:08:42 +00:00
< / li >
2022-07-02 01:15:32 +00:00
< / ul >
< / div >
2024-04-02 05:42:43 +00:00
< p > Last Modified: 2 April 2024< br >
add js function in README< br >
2023-03-22 11:03:02 +00:00
< pre > i:56 urls support CTRL_A to CTRL-Z
2023-03-07 02:07:05 +00:00
< / pre >
< / p >
2024-03-21 01:04:37 +00:00
2023-05-06 01:56:44 +00:00
< 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"
2023-05-06 02:49:29 +00:00
data-mapping="title"
2023-05-06 01:56:44 +00:00
data-strict="0"
data-reactions-enabled="1"
data-emit-metadata="0"
data-input-position="top"
data-theme="light"
data-lang="en"
data-loading="lazy"
2023-05-06 02:49:29 +00:00
crossorigin="anonymous" async>
2023-05-06 01:40:28 +00:00
< / script >
2022-07-02 01:15:32 +00:00
2024-04-03 01:47:35 +00:00
< footer class = "site-footer" >
< div class = "container" >
2024-04-04 13:28:55 +00:00
© 2018-2024 Richard H. Cao
2024-04-03 01:47:35 +00:00
< / div >
< / footer >
2024-04-04 13:28:55 +00:00
<!-- This document is licensed under the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front - Cover Texts, and no Back - Cover Texts. A copy of the license is available at <https://www.gnu.org/licenses/>. -->
2022-07-02 01:15:32 +00:00
< / body >
< / html >