【キントーン】別タブで開かないようにしたい

関連レコードやアクションの際に別タブで開かないようにしたいです。
(同じページでページ遷移にしたい)

JavaScriptなどのカスタマイズで可能なのでしょうか。
方法知っている方いたら教えて下さい!

1 Like

関連レコードは、詳細画面表示のイベントよりも後に描画されるので
対応が必要のようです。

参考URL
kintone 関連レコード詳細画面で遅延表示の動作検証 #JavaScript - Qiita


話は変わりますが
関連レコードのレコードへのリンクを同じタブで開くようにするものをブラウザのコンソールに貼り付けて
擬似的に新しいタブで開かないようにしたところ
使い慣れていないのか、かなり使いづらかったです。
画面が切り替わったことが気づきづらい。

document.querySelectorAll('a[target="_blank"]').forEach(function(link) {
    link.setAttribute('target', '_self');
});
1 Like

ありがとうございます!
下記コードをアプリに読み込ませてみたのですが、挙動が変わりません、、

理解が甘くて恐縮なのですが、使い方が違うのでしょうか。。

(() => {
  kintone.events.on([
      'app.record.detail.show',
  ], (event) => {
		document.querySelectorAll('a[target="_blank"]').forEach(function(link) {
			link.setAttribute('target', '_self');
	});
      return event;
  });
})();
1 Like

ご自身で
ブレイクポイントを入れてみてほしいのですが、
app.record.detail.show のタイミングでは、関連レコードの中身が画面上に存在しません。
そのため、_blankを _selfに書き換えできません。
関連レコードの内容は遅れて表示されています。

その対策について書いてあるのが前の投稿の参考URLの内容です。

ご返答ありがとうございます!
週明けに試してみます

先日は色々と教えていただきありがとうございました!
aタグを取得するやり方だとうまくいかなかったので下記コードを試し、関連レコードは別タブで開かないようにすることができました!

(function() {

  'use strict';

  var events = ['app.record.detail.show'];
kintone.events.on(events, function(event) {

      const target = document.body;
      // ノードに変化があれば実行
      const observer = new MutationObserver(function() {
          const el = document.getElementsByClassName('listTable-action-gaia');
          for(let i = 0 ; i < el.length ; i++) {
            el[i].removeAttribute('target'); // targetプロパティを削除(これにより同タブ遷移となる)
          }
      });
    const config = { childList: true, subtree: true }; // 監視を指定するオプション
    observer.observe(target, config); // 監視開始

});

})();

アプリアクションのボタンも別タブで開かないようにしたいのですが、ボタンがaタグではないのでうまく動きません。
アクションボタンにも対応させる方法をご存知でしょうか。

リンクでもボタンでもないがリンクしている場合、当該要素にイベントリスナーが設定されている可能性が高いです。

デベロッパーツールでアクションボタンを選択した状態で[要素]-[イベントリスナー]の欄に clickという欄があり、span.gaia-app-statusbar-actionがあります。これを削除するとアクションボタンは表示されたままですがアクション機能がなくなりました。

イベントリスナーで設定されている内容に介入方法になるかと思います。

1 Like

ありがとうございます!
自分の画面だとアクションボタンはあるレコード詳細画面で検証ツールを確認しても"span.gaia-app-statusbar-action"がないですね、、、

ここでクリックイベントの確認ができることがわかっただけでもありがたいです!
模索してみます

スクリーンショット 2024-02-16 11.21.13

詳しい仕組みはわからないのですが、目的の要素が選択されていないとイベントリスナーの表示画面にでないようでした。

要素が選ばれていて、当該要素の表示が反転しているのを確認した状態でイベントリスナーを表示させると要素が出てきました。

別の理由かもしれませんが、念のためご確認ください。

選択したらイベントリスナーに出てきました!
何度も確認ありがとうございます!

結構難しそうですが、これをどうにかしてページ遷移に出来ないかやってみます:bowing_woman:

ちょっと見た感じ難しそうでしたね。

新しいタブで開かないようにするだけなら、今あるイベントリスナーを削除して、新しいイベントリスナーをつけたらいいかなとおもったのですが、アクション機能が消えてしまうと思います。

なんとか元々のイベントリスナーに介入する必要がありそうです。

なるほど、ありがとうございます!
ちょっとトライしてみて難しそうなら諦めます:sweat_drops:

アクションの仕組み自体はよくわからないのですが、

https://example.cybozu.com/k/123/edit?action=9999999&app=502&record=2

というようなURLにアクセスすれば、
アクションを実行してくれるようです。

アクションで設定したURLにアクセスすれば自動でルックアップできるような形になっているようです。

・アクション番号は、アクションの移行先URLから見つけて合わせてください。
・appは、コピー元のアプリID
・recordは、コピー元のレコード番号

私はてっきりコピー元のデータをリンクURLのパラメーターとして渡していて、アクションボタンから開かないと、値をコピーしてくれないのかと思っていました。
ログアウトした状態からでも、ログインを経由してアクションを実行できました。

ありがとうございます!
こちらの内容を元にページ遷移のアクションボタンを実装することが出来ました!

長きに渡りお力貸していただき大変助かりました。
本当にありがとうございます:bowing_woman::bowing_woman: