ユーザマニュアル




2024/07/08

MANUAL

FAQ:$p.events.on_editor_loadを複数設定できるようにしたい

## 回答 以下いずれかの方法で実現できます。 1. 実行したい処理を配列に追加し、$p.events.on_editor_loadで配列に格納した処理を順次呼び出す。 1. 実行したい処理を一つのファンクションとして定義し、$p.events.on_editor_loadで順次ファンクションを呼び出す。 --- ## 概要 複数のスクリプトファイルに渡って$p.events.on_editor_loadを複数書くとスクリプトが上書きされてしまい、一番最新のものしか動作しなくなります。回避策として以下の2つの方法があります。 1. 実行したい処理を配列に追加し、$p.events.on_editor_loadで配列に格納した処理を順次呼び出す。 1. 実行したい処理を一つのファンクションとして定義し、$p.events.on_editor_loadで順次ファンクションを呼び出す。 なお、$p.events.on_editor_loadの他、$p.events.on_grid_loadやその他[イベント発火系スクリプト](/ja/manual/script-events-after-send)について同様の現象が発生しますので、本内容で回避可能です。 ### 1. 実行したい処理を配列に追加し、$p.events.on_editor_loadで配列に格納した処理を順次呼び出す ## サンプルコード ##### JavaScript ``` //配列を定義 $p.events.on_editor_load_arr = []; ``` ##### JavaScript ``` //処理1を追加 $p.events.on_editor_load_arr.push(function() { alert("test1"); //任意の処理 }); ``` ##### JavaScript ``` //処理2を追加 $p.events.on_editor_load_arr.push(function() { alert("test2"); //任意の処理 }); ``` ##### JavaScript ``` //実行 $p.events.on_editor_load = function() { for (let i = 0; i < $p.events.on_editor_load_arr.length; i++) { $p.events.on_editor_load_arr[i] (); } } ``` プリザンターの[スクリプト](/ja/manual/table-management-script)には以下のように登録します。 ![image](https://pleasanter.org/binaries/8707ed5134484092867fa573d007c21d) ID=1で「配列の定義」のスクリプト、ID=4に「実行」のスクリプトを登録します。ID=2、ID=3には実行したい処理を追加するスクリプトをそれぞれ登録します。この例では2つの処理を追加していますが、ID=1、ID=4の間に記載することでいくつでも処理を追加することができます。 ### 2. 実行したい処理を一つのファンクションとして定義し、$p.events.on_editor_loadで順次ファンクションを呼び出す ## サンプル ##### JavaScript ``` //処理1を定義 $p.ex.myFunc1 = function() { alert("test1"); //任意の処理 } ``` ##### JavaScript ``` //処理2を定義 $p.ex.myFunc2 = function() { alert("test2"); //任意の処理 } ``` ##### JavaScript ``` //実行 $p.events.on_editor_load = function() { $p.ex.myFunc1(); $p.ex.myFunc2(); } ``` プリザンターの[スクリプト](/ja/manual/table-management-script)には以下のように登録します。 ![image](https://pleasanter.org/binaries/716cc574030545e38267d38edcb6b825) ID=1,2で定義したファンクションのスクリプトを登録し、。ID=3で「実行」のスクリプトを登録します。この例では2つの処理を追加していますが、ID=3の前に記載することでいくつでも処理を追加することができます。
TOP
このページをシェアする
記載された商品名、各製品名は各社の登録商標または商標です。 © Implem Inc.