Firefox ๋ธŒ๋ผ์šฐ์ € ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ
  • ํ™•์žฅ ๊ธฐ๋Šฅ
  • ํ…Œ๋งˆ
    • Firefox์šฉ
    • ์‚ฌ์ „ ๋ฐ ์–ธ์–ด ํŒฉ
    • ๋‹ค๋ฅธ ๋ธŒ๋ผ์šฐ์ € ์‚ฌ์ดํŠธ
    • Android ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ
๋กœ๊ทธ์ธ
Script Menu ๋ฏธ๋ฆฌ๋ณด๊ธฐ

Script Menu ์ œ์ž‘์ž: yobukodori

Select and run the registered JavaScript (userscript) from the menu. Works on Android as well as on PC. I developed this extension for Firefox for Mobile where the bookmarklets is not available. ็™ป้Œฒใ—ใŸใ‚นใ‚ฏใƒชใƒ—ใƒˆใ‚’ใƒกใƒ‹ใƒฅใƒผใ‹ใ‚‰้ธๆŠžใ—ใฆๅฎŸ่กŒใ—ใพใ™ใ€‚Androidใงใ‚‚ๆฉŸ่ƒฝใ—ใพใ™

์‹คํ—˜์ ์‹คํ—˜์ 
Androidโ„ข์šฉ Firefox์—์„œ ์‚ฌ์šฉ ๊ฐ€๋ŠฅAndroidโ„ข์šฉ Firefox์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ
4.7 (3 reviews)4.7 (3 reviews)
์‚ฌ์šฉ์ž 48๋ช…์‚ฌ์šฉ์ž 48๋ช…
์ด ํ™•์žฅ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด Firefox๊ฐ€ ํ•„์š”ํ•จ
Firefox๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ํ™•์žฅ ๊ธฐ๋Šฅ์„ ๋ฐ›์œผ์„ธ์š”
ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ

ํ™•์žฅ ๋ฉ”ํƒ€ ๋ฐ์ดํ„ฐ

์Šคํฌ๋ฆฐ์ƒท
์ •๋ณด
Select and run the registered JavaScript (userscript) from the menu. Using browser.tabs.executeScript API.
Works on Android as well as on PC. I developed this extension for Firefox for Mobile where the bookmarklets is not available.

Usage
screenshot
  • Show menu in page: Show menu in page for quick access to the menu on Android.
  • Print debug info: Output debug information at the bottom of the Options tab.
  • Add line numbers: Add line numbers to script resource.
  • Script Resource: Script to register in the menu.
    1. Script Resource must not begin with a non-directive line, such as a blank line. Always start with a specific directive line.
    2. Each script begins with the //name directive.
      The //name directive specifies the script name to be displayed on the menu.
      ใ€€//name Go page top
    3. The //matches directive specifies a comma-separated list of URL patterns for the pages where you want to display the script name. (Optional)
      //matches https://www.google.com/*, https://github.com/*
    4. The //exclude directive specifies a comma-separated list of URL patterns for the pages where you don't want to display the script name. (Optional)
      The //exclude directive has a higher priority than the //matches directive.
      //exclude https://yobukodori.github.io/*, https://github.com/yobukodori/*
    5. The //option directive specifies a comma-separated list of tokens (Optional). The following tokens are available.
      //option page, all, blank
      • nonce: Sets true to wrapCodeInScriptTag and nonce.
      • page: Sets true to wrapCodeInScriptTag.
      • all: Sets true to allFrames.
      • blank: Sets true to matchAboutBlank.
      • See the following //options directive for options.
    6. The //options directive sets details. (Optional)
      ใ€€//options
      ใ€€{
      ใ€€ใ€€"allFrames": true,
      ใ€€ใ€€"wrapCodeInScriptTag": true
      ใ€€}
      wrapCodeInScriptTag is a Script Menu specific option. If its value is true, the code is wrapped in a script tag and executed. Then you can access the variables/functions/objects, etc. defined by page script.
      Internally convert it to the following code and execute it.
      (function() {
        let e = document.createElement("script");
        e.append(<your code>);
        e.nonce = <nonce value>; // Set if nonce option is true.
        document.documentElement.appendChild(e);
        e.remove();
      })();
      nonce option is used with wrapCodeInScriptTag to set the nonce attribute on the script tag.
      For example, twitter.com restricts script execution with Content Security Policy nonce-source. To run code in the context of a page script:
      //name xhr logger
      //matches *://twitter.com/*
      //; The next option should be 'nonce'. Specifying 'page' will fail.
      //option nonce
      //js
      XMLHttpRequest.prototype.open = new Proxy(XMLHttpRequest.prototype.open, {
        apply: function(target, thisArg, args ) {
          console.log(args[0], args[1]);
          return Reflect.apply(target, thisArg, args);
        }
      });

      You can also use comment style or comma expression style so that it will not cause an error when executed as javascript.
      ใ€€//options
      ใ€€/* { "wrapCodeInScriptTag": true } */
      or
      ใ€€//options
      ใ€€0, { "wrapCodeInScriptTag": true }
    7. Content scripts and Page scripts
      See Content script environment.
      This add-on executes the code as a content scripts.
      To execute the code in the context of a page scripts, inject a script tag that wraps the code. The option wrapCodeInScriptTag does this for you.
      Without wrapCodeInScriptTag option
      [advantage]
      • Can execute external script file specified in the //js section without CSP restrictions.
      • Can read cross-origin resources with xhr/fetch without CORS restrictions.
      [disadvantage]
      • Can't access the variables/functions/objects, etc. defined by the page script.
      With wrapCodeInScriptTag option
      You can access the variables/functions/objects, etc. defined by the page scripts. However, the above restrictions of CSP and CORS will apply.
    8. Finally, write the code with the //js directive.
      [NOTE] Doesn't check the syntax of the code, so please paste the code that has been tested to work.
      //js
      (function(){
          alert("hello");
      })();
    9. Simply write the URL and you can execute the script.
      This add-on itself reads the script from the URL and executes the loaded code.
      [NOTE] If you want to access the variables/functions/objects, etc. defined by the page script, specify wrapCodeInScriptTag in the //options directive.
      //js
      https://yobukodori.github.io/foo.js
    10. Prepared the following built-in scripts for Fenix.
      //name View Page Source
      //js
      builtin:view-page-source
      //name View (Selected) outerHTML
      //js
      builtin:view-outerhtml
    11. //module directive and //require directive
      //module: define module.
      //require: import module or external script file. Can import multiple modules.
      //module libA
      //js
      function foo(){ console.log("foo"); }
      function bar(){ console.log("bar"); }
      //module libB
      //js
      function baz(){ console.log("baz"); }
      //name item-1
      //require libA
      //js
      foo();
      //name item-2
      //require libA, libB
      //js
      bar(); baz();
      //name item-3
      //require https://code.jquery.com/jquery-2.2.4.min.js
      //js
      console.log(typeof $);
    12. //#include preprocess-directive replaces this line with the contents of the file at the given url.
      //#include https://yobukodori.github.io/scrip-menu-item.js
      You can specify any part of the script resource as it is simply replaced before parsing.
    13. Other directives. (Optional)
      //disable: disable this script. In case you don't use the script but want to keep it.
      //eof: Ignore the lines that follow.
      //[-=*;#]: Comment line. Excluding //#include.
      //name Obsolete script
      //disable
      //js
      (function(){/* code */})();
      //===============================
      //name Beautify the page
      //# comment
      //js
      (function(){/* code */})();
      //eof
      #############################
      [memo]
      ...
      [todo]
      ...
  • Go to line: Move the cursor to the specified line.
  • Go to Script...: Move the cursor to the start of each script.
  • Save: Save settings and scripts resource. And apply settings and scripts.
  • Apply: Apply settings and scripts. (doesn't save).
  • Get Status: get current status and applied scripts.
  • Clear Log: Clear log.
3๋ช…์˜ ๋ฆฌ๋ทฐ์–ด๊ฐ€ 4.7๋กœ ํ‰๊ฐ€ํ•จ
๋กœ๊ทธ์ธํ•˜์—ฌ ์ด ํ™•์žฅ ๊ธฐ๋Šฅ์˜ ํ‰์ ์„ ๋‚จ๊ฒจ์ฃผ์„ธ์š”
์•„์ง ํ‰์ ์ด ์—†์Šต๋‹ˆ๋‹ค

๋ณ„์  ์ €์žฅ๋จ

5
2
4
1
3
0
2
0
1
0
๋ฆฌ๋ทฐ 3๊ฐœ ๋ชจ๋‘ ์ฝ๊ธฐ
๊ถŒํ•œ ๋ฐ ๋ฐ์ดํ„ฐ๋” ์•Œ์•„๋ณด๊ธฐ

ํ•„์š”ํ•œ ๊ถŒํ•œ:

  • ๋ธŒ๋ผ์šฐ์ € ํƒญ์— ์ ‘๊ทผ
  • ํƒ์ƒ‰ ์ค‘ ๋ธŒ๋ผ์šฐ์ € ํ™œ๋™์— ์ ‘๊ทผ
  • ๋ชจ๋“  ์›น์‚ฌ์ดํŠธ์—์„œ ์‚ฌ์šฉ์ž์˜ ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผ
์ถ”๊ฐ€ ์ •๋ณด
๋ถ€๊ฐ€ ๊ธฐ๋Šฅ ๋งํฌ
  • ์ง€์› ์‚ฌ์ดํŠธ
๋ฒ„์ „
0.3.0
ํฌ๊ธฐ
30.89 KB
๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ
์ผ ๋…„ ์ „ (2024๋…„ 2์›” 28์ผ)
๊ด€๋ จ ์นดํ…Œ๊ณ ๋ฆฌ
  • ์›น ๊ฐœ๋ฐœ ๋„๊ตฌ
๋ผ์ด์„ ์Šค
Mozilla Public License 2.0
๊ฐœ์ธ์ •๋ณด์ฒ˜๋ฆฌ๋ฐฉ์นจ
์ด ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ๊ฐœ์ธ์ •๋ณด์ฒ˜๋ฆฌ๋ฐฉ์นจ ์ฝ๊ธฐ
๋ฒ„์ „ ๋ชฉ๋ก
  • ๋ชจ๋“  ๋ฒ„์ „ ๋ณด๊ธฐ
๋ชจ์Œ์ง‘์— ์ถ”๊ฐ€
์ด ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ ์‹ ๊ณ 
yobukodori ๋‹˜์˜ ๋‹ค๋ฅธ ํ™•์žฅ ๊ธฐ๋Šฅ
  • ์•„์ง ํ‰์ ์ด ์—†์Šต๋‹ˆ๋‹ค

  • ์•„์ง ํ‰์ ์ด ์—†์Šต๋‹ˆ๋‹ค

  • ์•„์ง ํ‰์ ์ด ์—†์Šต๋‹ˆ๋‹ค

  • ์•„์ง ํ‰์ ์ด ์—†์Šต๋‹ˆ๋‹ค

  • ์•„์ง ํ‰์ ์ด ์—†์Šต๋‹ˆ๋‹ค

  • ์•„์ง ํ‰์ ์ด ์—†์Šต๋‹ˆ๋‹ค

Mozilla ํ™ˆํŽ˜์ด์ง€๋กœ ์ด๋™

๋ถ€๊ฐ€ ๊ธฐ๋Šฅ

  • ์†Œ๊ฐœ
  • Firefox ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ ๋ธ”๋กœ๊ทธ
  • ํ™•์žฅ ๊ธฐ๋Šฅ ์›Œํฌ์ƒต
  • ๊ฐœ๋ฐœ์ž ํ—ˆ๋ธŒ
  • ๊ฐœ๋ฐœ์ž ์ •์ฑ…
  • ์ปค๋ฎค๋‹ˆํ‹ฐ ๋ธ”๋กœ๊ทธ
  • ํฌ๋Ÿผ
  • ๋ฒ„๊ทธ ์‹ ๊ณ 
  • ๋ฆฌ๋ทฐ ์ง€์นจ

๋ธŒ๋ผ์šฐ์ €

  • Desktop
  • Mobile
  • Enterprise

์ œํ’ˆ

  • Browsers
  • VPN
  • Relay
  • Monitor
  • Pocket
  • Bluesky (@firefox.com)
  • Instagram (Firefox)
  • YouTube (firefoxchannel)
  • ๊ฐœ์ธ ์ •๋ณด
  • ์ฟ ํ‚ค
  • ๋ฒ•๋ฅ 

ํŠน๋ณ„ํ•œ ๊ณ ์ง€๊ฐ€ ์—†๋Š” ํ•œ, ๋ณธ ์‚ฌ์ดํŠธ์˜ ์ฝ˜ํ…์ธ ๋Š” Commons Attribution Share-Alike License v3.0 ๋˜๋Š” ๊ทธ ์ดํ›„ ๋ฒ„์ „์— ๋”ฐ๋ผ ์‚ฌ์šฉ์ด ํ—ˆ๊ฐ€๋ฉ๋‹ˆ๋‹ค. Android๋Š” Google LLC์˜ ์ƒํ‘œ์ž…๋‹ˆ๋‹ค.