Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
dev:client_coding:javascript_api [2021/04/01 16:26] – [File Operations] dstillmandev:client_coding:javascript_api [2024/08/21 03:55] (current) – [Zotero JavaScript API] dstillman
Line 3: Line 3:
 Whereas Zotero's [[dev:web_api|Web API]] allows read and write access to online Zotero libraries, it is also possible to access the local Zotero client through the local JavaScript API. (It is also possible to [[dev/client_coding/direct_sqlite_database_access|directly access the local SQLite database]], but that approach is much more fragile.) Whereas Zotero's [[dev:web_api|Web API]] allows read and write access to online Zotero libraries, it is also possible to access the local Zotero client through the local JavaScript API. (It is also possible to [[dev/client_coding/direct_sqlite_database_access|directly access the local SQLite database]], but that approach is much more fragile.)
  
-Note that the (mostly user-contributed) documentation of the JavaScript API is not comprehensive. If you use the JavaScript API in ways beyond what's described here, please consider expanding this wiki page. +Note that this documentation of the JavaScript API is not comprehensive. If you use the JavaScript API in ways beyond what's described here, please consider expanding this wiki page or suggesting changes in the forums.
- +
 ===== Running Ad Hoc JavaScript in Zotero ===== ===== Running Ad Hoc JavaScript in Zotero =====
  
Line 36: Line 34:
 Non-window scope applies to lower-level code that doesn't have access to the DOM. This includes the core ''Zotero'' object, which contains all other non-window code, including the data layer used for retrieving and modifying library data. In Zotero, non-window code is contained within the ''xpcom'' subdirectory. Non-window scope applies to lower-level code that doesn't have access to the DOM. This includes the core ''Zotero'' object, which contains all other non-window code, including the data layer used for retrieving and modifying library data. In Zotero, non-window code is contained within the ''xpcom'' subdirectory.
  
-Overlays and windows in Zotero can import the core ''Zotero'' object via the include.js script. Zotero methods can then be called from anywhere within the window's scope simply by calling, for example, ''var item = Zotero.Items.get(1);''.+Windows in Zotero can import the core ''Zotero'' object via the include.js script. Zotero methods can then be called from anywhere within the window's scope simply by calling, for example, ''var item = Zotero.Items.get(1);''.
  
-To access Zotero functionality from your own extension, you will need access to the core ''Zotero'' object. If your extension operates within the main browser overlay, you already have access to the ''Zotero'' object and don’t need to take further steps. Otherwise, you can import the Zotero object into other windows by including the script %%chrome://zotero/content/include.js%% within an HTML or XUL file:+To access Zotero functionality from your own extension, you will need access to the core ''Zotero'' object. If your extension operates within the main Zotero window, you already have access to the ''Zotero'' object and don’t need to take further steps. Otherwise, you can import the Zotero object into other windows by including the script %%chrome://zotero/content/include.js%% within an HTML or XUL file:
  
 <code html> <code html>
Line 216: Line 214:
 s.addCondition('collection', 'is', collectionKey); // e.g., 'C72FDAP2' s.addCondition('collection', 'is', collectionKey); // e.g., 'C72FDAP2'
 s.addCondition('savedSearch', 'is', savedSearchKey); s.addCondition('savedSearch', 'is', savedSearchKey);
 +</code>
 +
 +=== Search by creator === 
 +
 +<code javascript>
 +var name = 'smith';
 +s.addCondition('creator', 'contains', name);
 </code> </code>
  
Line 236: Line 241:
 results: results:
  
-<code javascript>var results = await s.search();</code>+<code javascript>var itemIDs = await s.search();</code>
  
 This returns the item ids in the search as an array. The next thing to do is to get the Zotero items for the array of IDs: This returns the item ids in the search as an array. The next thing to do is to get the Zotero items for the array of IDs:
  
-<code javascript>var items = await Zotero.Items.getAsync(results);</code>+<code javascript>var items = await Zotero.Items.getAsync(itemIDs);</code>
  
 ==== Managing citations and bibliographies ==== ==== Managing citations and bibliographies ====
dev/client_coding/javascript_api.1617308814.txt.gz · Last modified: 2021/04/01 16:26 by dstillman