私は、Excel から ERP システム (Sage ERP X3 V7) のフォーム/テーブルに「貼り付け」機能を提供する目的で、Chrome 拡張機能を開発中です。
すべてが適度にうまく機能していますが、テキストを手動で入力したときに発生するデフォルトのイベントを取得する際に問題が発生しました。
「ビジュアル イベント」を使用して、どのイベント リスナーが入力に割り当てられているかを確認し、jQuery .trigger メソッドを使用して手動でトリガーしようとしました。
それが単なるタイミングの問題なのか、それとも何なのかわかりません。通常、手動で行を入力するときは、タブを押して次のフィールドに移動しますが、次に進む前にデータを検証するのに少し時間がかかります。ここでトリガーする必要があるのは、その検証です。
これは、focusin および focusout イベントをトリガーするために使用しているコード スニペットです。
function pasteLineData(lineData, data_s_article){
console.log($(".s-list-core[data-s-article='" + data_s_article + "'] tbody>tr:last").length);
var fieldData = lineData.split("\t");
var f=0;
$(".s-list-core[data-s-article='" + data_s_article + "'] tbody>tr:last").each(function (){
var $fields = $(this).find("input[readonly!='readonly']:not(.s-readonly):visible");
$fields.each(function(){
console.log($(this).attr("id"));
console.log(fieldData[f]);
$(this).trigger("focusin");
$(this).val(fieldData[f]);
$(this).trigger("focusout");
f++;
});
});
}
(使用中のセレクターは、特定のテーブルとアクティブなフィールドのみを取得するためのものであり、一部は表示のみです)
拡張機能を取得してエントリ プロセスをシミュレートする方法について何か提案はありますか?