manaba-enhanced
manaba-enhanced copied to clipboard
新規タブで開いた時に元タブでも遷移するのを抑制
小テスト・アンケート・レポートページの一覧表では、リンクに対してhrefだけではなくonclick属性も付与されている。 そのため、中ボタンクリックやCtrl+クリックで新規タブで開いた場合に、新規タブが開くだけではなく元のタブの方でもページが遷移してしまう。 そのため中ボタンクリックやCtrl+クリックした場合にはページ遷移を無効にする機能が欲しい。
@mkobayashime これマージしていただけそうならオプトイン機能として実装してPR出しますがいかがでしょうか。manaba Enhancedにそぐわないなら別に拡張機能を自作します。
@onokatio ご提案ありがとうございます!
個人的にもこの挙動は不便だと感じた覚えがあり、実装いただけるのであれば積極的にマージしようとは思うのですが、今手元で試す限りではこの挙動(元タブでの遷移)が再現できずどうしたものかと思っています とりあえず、お使いのブラウザやバージョンなどをご教示いだたいてもよろしいでしょうか?
自分の環境は
- Ubuntu 22.04
- Google Chrome 108.0.5359.124 (Official Build) (64-bit)
です
検討ありがとうございます。
私の環境は以下の通りです。
-
macOS Ventura 13.2
-
Firefox 108.0.1
念の為Google Chromeでも試してみましたが、私の方でも再現できませんでした。逆に新規タブが開かれずページ遷移のみとなります。
( Google Chrome 108.0.5359.124(Official Build) (arm64)
)
もう少しイベントの内容を見てみないとわかりませんが、もしかするとブラウザ依存かもしれません。
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 対応失念しており大変失礼しました なるほど、ブラウザ間で挙動異なるのですね 手元でも Firefox では件の挙動を確認できました
実装方針について、素朴には onclick
を取り除くことになるかと思いますが、この場合 tr
のうち a
でない領域のクリックで遷移ができなくなりそうです
オプトインでの提供であればこの挙動でもまずはOKかと思いますが、もし他に何か良い手があり
- 別タブで開いたときには元タブの遷移が起こらず
-
tr
全域のクリックで遷移ができる
ような挙動が実現できるのであれば、デフォルトで有効化していただいても大丈夫です!