5 <meta name=
"viewport" content=
"width=device-width, initial-scale=1" />
6 <link rel=
"canonical" href=
"https://jamesfengcao.gitlab.io/uweb/en/rjs/" />
8 <link rel=
"stylesheet" href=
"../style.css#" type=
"text/css" />
9 <title>Execute javascript codes
</title>
12 let href
= location
.href
;
13 for(let i
=href
.length
-1;i
>0;i
--){
14 if('/'==href
.charAt(i
) && '/'==href
.charAt(i
-3))
21 location
.href
= location
.href
.substring(0,i
+1)+page
;
23 function nav2Lang(lang
){
25 let href
= location
.href
;
26 location
.href
= location
.href
.substring(0,i
-2)+lang
+location
.href
.substring(i
);
31 <header class='header'
>
32 <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>
35 <a class=
"logo" href=
"javascript:void(0)" onclick=
"return nav2Lang('zh')">简体中文
</a>
43 <div class=
"container">
44 <h1 class=
"title">Execute javascript codes
46 <span class=
"subtitle"></span>
51 <p><a href=
"../sitejs/index.html#">javascript for domains
</a><br>
52 <a href=
"../globalcss/index.html#">Earliest loaded global javascript
</a> files locates in the subfolder
"css
" of app private folder.
</p>
53 <p><b>Global javascript
</b> files locates in the subfolder
"js
" of app private folder. Long press button [☰] to configure. Click the following links to install:
<br>
54 <a target=
"_self" href=
"i:0hjs/savePassword.js:../../zh/searchurl/txt/passwdsave.js">Save password
</a><br>
55 <a target=
"_self" href=
"i:0hjs/instantPage.js:https://fastly.jsdelivr.net/npm/instant.page">Instant page
</a></p>
56 <p><b>large size javascript code
</b> can be installed to the folder
"bookmarklet
" (long pressing button
"js
" to popup menu):
<br>
57 <a target=
"_self" href=
"i:0hbookmarklet/!googleTranslate.js:https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit:%0A{let d=document,b=d.body,v=d.createElement('div');v.id='google_translate_element';v.style='position:fixed;bottom:10px;right:10px;cursor:pointer;z-index:9999';b.insertBefore(v,b.firstChild);function googleTranslateElementInit(){new google.translate.TranslateElement({layout:google.translate.TranslateElement.InlineLayout.SIMPLE,multilanguagePage:true,pageLanguage:'auto',includedLanguages:'zh-CN,zh-TW,en,ko,ja'},'google_translate_element');}}">google translation
</a></p>
58 <p><a target=
"_self" href='i:
0hbookmarklet/eruda.js:https://fastly.jsdelivr.net/npm/eruda:%
0Aeruda.init()'
>Eruda
</a><br>
59 <a target=
"_self" href=
"i:0hbookmarklet/performance.js:https://fastly.jsdelivr.net/gh/micmro/performance-bookmarklet/dist/performanceBookmarklet.min.js">Performance
</a></p>
60 <p>Note: Bookmarklets whose names begin with
"!
" are allowed to load remote js on CSP (Content Security Policy) sites.
</p>
61 <p><b>Remote javascript
</b> is defined in default.rjs. Click the following link to install. (
<b>Force exit and re-launch the app
</b>, then long press the
"search
" button to popup the menu.):
</p>
62 <p><a href=
"i:04Selection to sentence:;let g='sentence';getSelection().modify('move','forward',g);getSelection().modify('extend','backward',g);">Selection to sentence:;let g='sentence';getSelection().modify('move','forward',g);getSelection().modify('extend','backward',g);
</a></p>
63 <p><a href=
"i:04Selection to line:;let g='line';getSelection().modify('move','forward',g);getSelection().modify('extend','backward',g);">Selection to line:;let g='line';getSelection().modify('move','forward',g);getSelection().modify('extend','backward',g);
</a></p>
64 <p><a href=
"i:04Selection to paragraph:;let g='paragraph';getSelection().modify('move','forward',g);getSelection().modify('extend','backward',g);">Selection to paragraph:;let g='paragraph';getSelection().modify('move','forward',g);getSelection().modify('extend','backward',g);
</a></p>
65 <p><a href=
"i:04markdown:['https://cdn.jsdelivr.net/npm/marked@12.0.2/marked.min.js'];var d=document;d.body.innerHTML=marked.parse(d.body.textContent);d.title=d.title||d.body.firstElementChild.innerText.trim();">markdown:['https://cdn.jsdelivr.net/npm/marked@
12.0.2/marked.min.js'];var d=document;d.body.innerHTML=marked.parse(d.body.textContent);d.title=d.title||d.body.firstElementChild.innerText.trim();
</a></p>
66 <p><a href=
"i:04mermaid:;loadModuleJS(`import mermaid from 'https://unpkg.com/mermaid/dist/mermaid.esm.min.mjs';mermaid.initialize({startOnLoad:true});`)">mermaid:;loadModuleJS(
<code>import mermaid from 'https://unpkg.com/mermaid/dist/mermaid.esm.min.mjs';mermaid.initialize({startOnLoad:true});
</code>)
</a></p>
67 <p><a href=
"i:04mathjax:['https://fastly.jsdelivr.net/npm/mathjax@3/es5/tex-svg.js']">mathjax:['https://fastly.jsdelivr.net/npm/mathjax@
3/es5/tex-svg.js']
</a></p>
68 <p><a href=
"i:04New tab to open links:;let d=document;b=d.createElement('base');b.setAttribute('target','_blank');d.head.appendChild(b)">New tab to open links:;let d=document;b=d.createElement('base');b.setAttribute('target','_blank');d.head.appendChild(b)
</a></p>
69 <p><a href=
"i:04Site search:;open('i:15site:' + location.hostname)">Site search:;open('i:
15site:' + location.hostname)
</a></p>
70 <p><a href=
"i:04Spell check:;let t=document.getElementsByTagName('textarea');let v=t[0].spellcheck;if(v==null)v=false;t[0].spellcheck=!v">Spell check:;let t=document.getElementsByTagName('textarea');let v=t[
0].spellcheck;if(v==null)v=false;t[
0].spellcheck=!v
</a></p>
71 <p>Remote script configuration file
"default.rjs
" whose lines have the following format:
<br>
72 [script name]:[javascript code to return url arrays]
</p>
73 <h4 id=
"activated-scripts">Activated scripts
</h4>
74 <p>Activate either local (bookmarklets) or remote js to execute the code on the similar sites with option
"Activate user script
".
</p>
75 <p>Since activated scripts use internal mechanism of
<a href=
"../links/index.html#">"i:
0m
" urls
</a>, the script itself cannot have
<span style=
"color:red">'H', '?' or '/'
</span> as its very first character.
</p>
76 <h4 id=
"allow-remote-js-on-csp-content-security-policy-sites">Allow remote js on CSP (Content Security Policy) sites
</h4>
77 <p>All remote js (default.rjs) are allowed to execute on CSP sites. Local js files without remote resource access work fine when under the folder
"bookmarklet
"; for those needing remote resource, file name must begin with
"!
". Others needs to be refered in default.rjs as http urls such as
"https://local/...
" (
<a href=
"../html5/index.html#">html5
</a> or
<a href=
"../offlinecache/index.html#">offline cache
</a>) .
</p>
80 <p>Last Modified:
14 December
2024<br>
86 src='https://giscus.app/client.js'
87 data-repo=
"torappinfo/uweb"
88 data-repo-id=
"MDEwOlJlcG9zaXRvcnkzMDIyMDU3MjE="
89 data-category=
"Announcements"
90 data-category-id=
"DIC_kwDOEgNLGc4CQjsh"
93 data-reactions-enabled=
"1"
94 data-emit-metadata=
"0"
95 data-input-position=
"top"
99 crossorigin=
"anonymous" async
>
102 <footer class=
"site-footer">
103 <div class=
"container">
104 © 2018-
2025 Richard H. Cao
107 <!-- 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/>. -->