GM.setValue: Difference between revisions

From GreaseSpot Wiki
Jump to navigationJump to search
Jerone (talk | contribs)
m Link to config.xml
Jerone (talk | contribs)
m Added corresponding ticket
Line 7: Line 7:
Strings, booleans, and integers are currently the only allowed data types.  
Strings, booleans, and integers are currently the only allowed data types.  


Per [[Version_history#1.13|Greasemonkey 1.13+]] values are saved per userscript in a [https://developer.mozilla.org/en-US/docs/Storage SQLite] database. You can find the corresponding database by the userscript <code>basedir</code> as defined in the <code>[[config.xml]]</code>. The values are only accessible by opening the database is an SQLite reader, like add-on [https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/ SQLite Manager].
Per [[Version_history#1.13|Greasemonkey 1.13+]] values are saved per userscript in a [https://developer.mozilla.org/en-US/docs/Storage SQLite] database <ref>Corresponding ticket for moving to SQLite: {{GitTicket|1798}}.</ref>. You can find the corresponding database by the userscript <code>basedir</code> as defined in the <code>[[config.xml]]</code>. The values are only accessible by opening the database is an SQLite reader, like add-on [https://addons.mozilla.org/en-US/firefox/addon/sqlite-manager/ SQLite Manager].


In older Greasemonkey version, values are saved in the [https://developer.mozilla.org/en/Code_snippets/Preferences Firefox preferences] back end and can be manually inspected or changed by typing [[mozillazine:About:config|about:config]] in the address bar and searching for the preference name "<code>greasemonkey.scriptvals.[[Metadata Block#.40namespace|namespace]]/[[Metadata Block#.40name|script_name]].value_name</code>".
In older Greasemonkey version, values are saved in the [https://developer.mozilla.org/en/Code_snippets/Preferences Firefox preferences] back end and can be manually inspected or changed by typing [[mozillazine:About:config|about:config]] in the address bar and searching for the preference name "<code>greasemonkey.scriptvals.[[Metadata Block#.40namespace|namespace]]/[[Metadata Block#.40name|script_name]].value_name</code>".

Revision as of 23:39, 23 January 2014


Description

This method allows user script authors to persist simple values across page-loads.

Strings, booleans, and integers are currently the only allowed data types.

Per Greasemonkey 1.13+ values are saved per userscript in a SQLite database [1]. You can find the corresponding database by the userscript basedir as defined in the config.xml. The values are only accessible by opening the database is an SQLite reader, like add-on SQLite Manager.

In older Greasemonkey version, values are saved in the Firefox preferences back end and can be manually inspected or changed by typing about:config in the address bar and searching for the preference name "greasemonkey.scriptvals.namespace/script_name.value_name". (For appropriate values of namespace, script_name and value_name.)

The Firefox preference store is not designed for storing large amounts of data. There are no hard limits, but very large amounts of data may cause Firefox to consume more memory and/or run more slowly. [2] Integer preferences must be in the range -231-1 to 231-1. Numbers outside this range can be stored by using .toString() before GM_setValue. [3]

Compatibility: Greasemonkey 0.3b+

Syntax

function GM_setValue( name, value )

Arguments

name
String The unique (within this script) name for this value. Should be restricted to valid Javascript identifier characters.
value
String, Integer or Boolean Any valid value of these types. Any other type may cause undefined behavior, including crashes.

Returns

undefined

Examples

Set the name foo to hold the value bar:

GM_setValue("foo", "bar");

See Also

References

  1. Corresponding ticket for moving to SQLite: #1798.
  2. Please see this mailing list thread for details.
  3. "Note: Preferences cannot store non-integer numbers or numbers outside the signed 32-bit range -(2^31-1) to 2^31-1, If you have such a number, store it as a string by calling toString() on the number before passing it to this method" source code on Github