-
投稿者投稿
-
2025年1月15日 11:58 AM #5103
【お使いの unitone のバージョン】
バージョン: 15.8.2
unitone 公式のフロントページにあるInstaWP 環境(バージョン: 13.0.0)では発生しませんでした。【お使いのブラウザ】
Google Chrome バージョン: 131.0.6778.265(Official Build) (64 ビット)(Windows11)【当該サイトのURL】
新たに作成したテスト環境にunitone バージョン: 15.8.2 をインストールした環境### 発生している問題
デコレーターブロックにリンクを設定した場合やクエリーループブロックでブロックリンクにしている場合に要素全体がリンクになると思います。
そのリンクがマウスの右クリックで画面遷移してしまいます。
こちらは検証が足りていないのですが、手元のノートPC(Windows ThinkPad)ではタッチパッドのタップでクリックに反応せず、押し込みクリックをしないと画面遷移しませんでした。### 試したこと
他プラグインなどの干渉も考えられたので、全プラグインを無効化して検証しても変わらず。
新たにテスト環境を構築してunitone をインストールして再現されるかを確認しました。この動画ではクエリーループブロックのスタイルがブロックリンクになっています。
右クリックしたのでWindows のコンテキストメニューが表示されると同時にリンク先に遷移しているのをご確認いただけるのではないかと思います。お忙しい中大変恐縮ですがご確認をお願いいたします。
♥ 0いいねをした人: いません2025年1月15日 12:19 PM #5104ご報告ありがとうございます!
そのリンクがマウスの右クリックで画面遷移してしまいます。
現状、JavaScript の
mousedown
/mouseup
でブロックリンクを実装していて、これ左クリックにしか反応しないと思っていたら右クリックにも反応してしまうみたいで、その影響で現象が発生してしまっているようでした。左クリックの時だけ反応するように修正入れます!こちらは検証が足りていないのですが、手元のノートPC(Windows ThinkPad)ではタッチパッドのタップでクリックに反応せず、押し込みクリックをしないと画面遷移しませんでした。
Windows 機がなくて MacBook でやってみたのですが、MacBook だと押し込まなくてもタップでいけるみたいでした。機種によって
mousedown
/mouseup
はタップ扱いにならないとかあるのかも?touchstart
/touchend
にも対応させればもしかしたら良いかもですが、mousedown
/mouseup
との共存がややこしいみたいなので、ひとまず調査してみて、できそうなら対応、すぐにはできなさそうなら今後のアップデートで対応を検討したいと思います。ということでアップデートをお待ちください m(. .)m
2025年1月15日 12:48 PM #5105めちゃくちゃ早い返信ありががとうございます!!
閲覧者さんには右クリックで遷移しても問題ないかなと思いつつ、実装中に右クリックから検証ツールを開きたいときにつらかったのでありがたいです。どのリンクをどう取り扱うかなどたくさん問題があるかもしれませんが個人的には、aタグで外もしくは内側にラップできるようにもなったらうれしいな思います。
PC のブラウザでリンク上にマウスホバーした時に左下にURLが表示さるといいなというところです。
スマホファーストの時代なのでPC 対応どこまで必要かというところはありますがwアップデート楽しみにしています、よろしくお願いします_(._.)_
♥ 0いいねをした人: いません2025年1月15日 4:16 PM #5106aタグで外もしくは内側にラップできるようにもなったらうれしいな思います。
こちら具体的にはどういうシチュエーションでしょうか?例えばある要素の内側にある要素をリンクで囲みたい場合は、その内側の要素をデコレーターブロックでラップしてリンクを設定したら良いのかな?と思ったり。
PC のブラウザでリンク上にマウスホバーした時に左下にURLが表示さるといいなというところです。
うーこれは僕もできたら良いなと思っているのですが!もともとブロックリンクは
a
の擬似要素を広げる形で実装していたのですが、それだとブロックを入れ子にした時のposition
の制御が難しい(特にサードパーティーのブロックだとposition
を変えてしまうとレイアウトが崩れる場合がある)ので、JavaScript での実装に変えた経緯があります。左下に URL がでるのはそのリンク要素にホバーしたときなのですが、JavaScript での実装だと実際にはリンク要素にはホバーしていないので URL がでないんですよね(TT)
「ホバーしたことにする」ことができれば表示されると思うのですが、調べた感じではちょっと方法を見つけきれませんでした…。
2025年1月15日 4:49 PM #5107ありがとうございます!
aタグでラップしたいのは
PC のブラウザでリンク上にマウスホバーした時に左下にURLが表示さるといいなというところです。
これを実現したいというのが一番大きいです。
全然詳しくないのですがaタグでラップすることで明示的にリンクになるのでアクセシビリティ的にもいいのかも?って勝手に思っています。間違っていたらすいません。
要素の中に別のリンクが指定されていた場合、そこだけ別のリンクになるのにも違和感を感じてしまいます。「ホバーしたことにする」
これしたいですよね。。
できないことがわかったので要素全体をリンクにするときはJavaScript で実装することが多いです(; ・`ω・´)
JavaScript の書き方にもよるのですが、不要なaタグを削除したり1つ目のリンクで上書きするということが多いです。ちょっと書き方雑なのですが、最近はこんな感じで
.linkbox
というclass をつけることで実装しました。
aタグの中にaタグが入ったままになるので一般的なものにするなら削除する形に修正が必要だと思います。document.addEventListener(‘DOMContentLoaded', function () { const linkBoxes = document.querySelectorAll(‘.linkbox'); linkBoxes.forEach(linkBox => { // .linkbox 内のすべての <a> タグを取得 const aTags = linkBox.querySelectorAll(‘a'); if (aTags.length === 0) return; // <a> タグがなければスキップ // 最初の <a> タグの href を取得 const firstATag = aTags[0]; const href = firstATag.getAttribute(‘href'); if (!href) return; // href がなければスキップ // 2つ目以降の <a> タグの href を上書き for (let i = 1; i < aTags.length; i++) { aTags[i].setAttribute(‘href', href); } // <a> タグで .linkbox をラップ const wrapperATag = document.createElement(‘a'); wrapperATag.setAttribute(‘href', href); // 元の target 属性を保持 const target = firstATag.getAttribute(‘target'); if (target) { wrapperATag.setAttribute(‘target', target); } // ラップする <a> タグにスタイルを設定 wrapperATag.style.textDecoration = ‘none'; // アンダーラインを消す wrapperATag.style.color = ‘inherit'; // テキストの色を親要素から継承 // .linkbox の親要素にラップを追加 const parent = linkBox.parentNode; parent.replaceChild(wrapperATag, linkBox); wrapperATag.appendChild(linkBox); }); });
わからんことばかりなので間違っていたらすいません(´;ω;`)
2025年1月15日 8:04 PM #5108全然詳しくないのですがaタグでラップすることで明示的にリンクになるのでアクセシビリティ的にもいいのかも?って勝手に思っています。間違っていたらすいません。
一応キーボード操作や音声時は正しいリンクにフォーカスするようにはなっています。普通のマウス操作時は確かに出ないので不便なんですよね…。ちなみに Safari はデフォルトだと左下に URL はでないみたいでした。
色々試してみたのですがやはりこの方式では無理そうだったので、実装の種類を選べるような機能を追加するのはアリかもしれません。(現状 or
a
でラップして中のa
は除去か置換)要素の中に別のリンクが指定されていた場合、そこだけ別のリンクになるのにも違和感を感じてしまいます。
そうなんですよね…自分でコーディングするなら良いのですが、WordPress の場合はなんでも入れられるのが難しいです^^;
2025年1月17日 9:12 AM #5127v15.9.0 で、下記の変更を入れました!
– 右クリックでは開かないように修正
– ブロックリンクを JavaScript 実装ではなくa
要素でラップする形に変更するフィルターフックunitone_is_outer_block_link
を追加詳細はアップデート情報をご確認ください。
アップデートしてみてください!
2025年1月17日 9:33 PM #5139めちゃくちゃ早い実装とアップデートまでありがとうございます!
早速アップデートさせていただきましたがまだ実装できていないので実装進めたいと思います!!
ほんとありがとうございます。自由度が高すぎるのでほんと実装のパターンが無限にあって悩ましいです(; ・`ω・´)
いま作っているのも近いうちリリースされると思うので、リリースされたらお伝えさせてくださいw
♥ 0いいねをした人: いません2025年1月18日 11:18 AM #5140はい!動作確認できて問題なさそうであればそのときにクローズお願いします。
つくられているサイト、すごく気になるのでぜひ!♥ 0いいねをした人: いません -
投稿者投稿
- このトピックに返信するにはログインが必要です。