manaba-enhanced icon indicating copy to clipboard operation
manaba-enhanced copied to clipboard

新規タブで開いた時に元タブでも遷移するのを抑制

Open onokatio opened this issue 2 years ago • 5 comments

小テスト・アンケート・レポートページの一覧表では、リンクに対してhrefだけではなくonclick属性も付与されている。 そのため、中ボタンクリックやCtrl+クリックで新規タブで開いた場合に、新規タブが開くだけではなく元のタブの方でもページが遷移してしまう。 そのため中ボタンクリックやCtrl+クリックした場合にはページ遷移を無効にする機能が欲しい。

onokatio avatar Dec 26 '22 01:12 onokatio

@mkobayashime これマージしていただけそうならオプトイン機能として実装してPR出しますがいかがでしょうか。manaba Enhancedにそぐわないなら別に拡張機能を自作します。

onokatio avatar Dec 26 '22 01:12 onokatio

@onokatio ご提案ありがとうございます!

個人的にもこの挙動は不便だと感じた覚えがあり、実装いただけるのであれば積極的にマージしようとは思うのですが、今手元で試す限りではこの挙動(元タブでの遷移)が再現できずどうしたものかと思っています とりあえず、お使いのブラウザやバージョンなどをご教示いだたいてもよろしいでしょうか?

自分の環境は

  • Ubuntu 22.04
  • Google Chrome 108.0.5359.124 (Official Build) (64-bit)

です

mkobayashime avatar Dec 27 '22 07:12 mkobayashime

検討ありがとうございます。

私の環境は以下の通りです。

  • macOS Ventura 13.2
  • Firefox 108.0.1

念の為Google Chromeでも試してみましたが、私の方でも再現できませんでした。逆に新規タブが開かれずページ遷移のみとなります。 ( Google Chrome 108.0.5359.124(Official Build) (arm64))

もう少しイベントの内容を見てみないとわかりませんが、もしかするとブラウザ依存かもしれません。

onokatio avatar Dec 27 '22 07:12 onokatio

chromeでも同じ挙動が発現するべきですが謎ですね...

https://manaba.tsukuba.ac.jp/webat.js?1670835127 795行目が該当してそうです。

/* OpenChildAnchor - open URL of the first anchor in the child nodes */
function OpenChildAnchor(e,opt) {
 var event = opt ? opt['event'] : null;
 var target = event ? evtarget(event) : null;
 if (target) {
  var a = manaba.findParentNode(target, "a");
  if (a) {
   return true;
  }
 }

 var href = findchildanchor(e, 0);
 if (href) window.open(href, "_self");
 return false;
}

aタグ自体をクリックしていなければwindow.openが呼ばれ、aタグであればreturn trueするため画面遷移しなさそうですが、これは謎ですね

onokatio avatar Dec 27 '22 07:12 onokatio

@onokatio 対応失念しており大変失礼しました なるほど、ブラウザ間で挙動異なるのですね 手元でも Firefox では件の挙動を確認できました

実装方針について、素朴には onclick を取り除くことになるかと思いますが、この場合 tr のうち a でない領域のクリックで遷移ができなくなりそうです オプトインでの提供であればこの挙動でもまずはOKかと思いますが、もし他に何か良い手があり

  • 別タブで開いたときには元タブの遷移が起こらず
  • tr 全域のクリックで遷移ができる

ような挙動が実現できるのであれば、デフォルトで有効化していただいても大丈夫です!

mkobayashime avatar Jan 02 '23 12:01 mkobayashime