Skip to content
This repository has been archived by the owner on Jan 17, 2025. It is now read-only.

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

Open
onokatio opened this issue Dec 26, 2022 · 5 comments
Open

Comments

@onokatio
Copy link

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

@onokatio
Copy link
Author

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

@mkobayashime
Copy link
Member

mkobayashime commented Dec 27, 2022

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

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

自分の環境は

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

です

@onokatio
Copy link
Author

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

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

  • macOS Ventura 13.2
  • Firefox 108.0.1

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

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

@onokatio
Copy link
Author

onokatio commented Dec 27, 2022

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するため画面遷移しなさそうですが、これは謎ですね

@mkobayashime
Copy link
Member

mkobayashime commented Jan 2, 2023

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

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

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

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

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants