実現したいこと
JavaScript で URL をコピーするボタンを作りたいです。
発生している問題・分からないこと
ポップアップが表示された時に Javascript で URL を表示することは可能なのでしょうか?
方法が分からず困っております、セキュリティ上問題ないのかアドバイスお願い致します。
該当のソースコード
Javascript
1<?php 2/* 3Template Name: bbs_share_link 4固定ページ: 共有ボタン 5*/ 6?> 7<style> 8 .quest-shareButton svg { 9 vertical-align: text-bottom; 10 } 11 12 .popup-wrapper { 13 background-color: rgba(0, 0, 0, .5); 14 position: fixed; 15 top: 0; 16 left: 0; 17 width: 100%; 18 height: 100%; 19 display: none; 20 } 21 22 /* ポップアップ時に表示されるコンテンツ位置 */ 23 .popup-inside { 24 text-align: center; 25 width: 100%; 26 max-width: 300px; 27 background: white; 28 margin: 10% auto; 29 padding: 20px; 30 position: relative; 31 } 32 33 .close { 34 position: absolute; 35 top: 0; 36 right: 5px; 37 cursor: pointer; 38 } 39 40 .sns-share-links { 41 display: flex; 42 align-items: center; 43 gap: 0px 50px; 44 } 45</style> 46 47<button type="button" class="quest-shareButton"> 48 <svg version="1.1" class="shareButton-icon" id="_x32_" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 512 512" style="width: 256px; height: 256px; opacity: 1;" xml:space="preserve"> 49 <style type="text/css"> 50 .st0 { 51 fill: #4B4B4B; 52 } 53 </style> 54 <g> 55 <path class="st0" d="M398.73,227.402c62.563,0,113.27-50.793,113.27-113.359c0-62.656-50.707-113.36-113.27-113.36 56 c-62.656,0-113.364,50.704-113.364,113.36c0,11.587,1.733,22.711,4.926,33.292l-114.914,69.397 57 c-18.512-20.154-44.959-32.739-74.417-32.739C45.146,183.993,0,229.228,0,284.954c0,55.816,45.146,100.962,100.962,100.962 58 c30.736,0,58.278-13.778,76.79-35.482l86.824,45.787c-2.646,8.39-4.106,17.323-4.106,26.63 59 c0.093,48.878,39.673,88.466,88.555,88.466c48.976,0,88.556-39.588,88.556-88.466c0-48.976-39.58-88.554-88.556-88.554 60 c-26.812,0-50.886,11.942-67.122,30.825l-84.726-49.431c3.104-9.672,4.742-19.976,4.742-30.736c0-10.393-1.55-20.43-4.56-29.827 61 l118.013-64.294C335.985,213.268,365.715,227.402,398.73,227.402z M344.282,59.687c14.045-13.956,33.11-22.524,54.448-22.524 62 c21.251,0,40.31,8.567,54.356,22.524c13.862,13.956,22.434,33.016,22.434,54.356c0,21.25-8.572,40.399-22.434,54.354 63 c-14.046,13.956-33.105,22.525-54.356,22.525c-19.059,0-36.298-6.84-49.794-18.419h-0.094c-1.55-1.273-3.099-2.645-4.56-4.106 64 c-10.852-10.946-18.422-24.991-21.246-40.852c-0.824-4.382-1.189-8.942-1.189-13.502C321.846,92.703,330.419,73.644,344.282,59.687 65 z M164.343,296.532c-2.28,13.138-8.661,24.902-17.781,34.022c-0.731,0.73-1.55,1.461-2.373,2.192 66 c-11.49,10.393-26.536,16.69-43.227,16.69c-17.874,0-33.928-7.205-45.6-18.881c-11.676-11.765-18.881-27.725-18.881-45.6 67 c0-17.874,7.205-33.834,18.881-45.6c11.672-11.676,27.726-18.881,45.6-18.881c16.232,0,30.825,5.932,42.225,15.782 68 c1.185,0.997,2.28,2.004,3.376,3.099c9.027,9.12,15.413,20.698,17.781,33.746c0.73,3.83,1.095,7.748,1.095,11.854 69 C165.438,288.873,165.074,292.801,164.343,296.532z M297.773,413.73c1.915-10.767,7.022-20.253,14.499-27.725 70 c0.638-0.641,1.367-1.372,2.098-1.915c9.21-8.39,21.251-13.314,34.654-13.314c14.504,0,27.36,5.745,36.846,15.23 71 c9.485,9.485,15.23,22.346,15.23,36.845c0,14.411-5.745,27.272-15.23,36.748c-9.486,9.486-22.342,15.238-36.846,15.238 72 c-14.406,0-27.266-5.753-36.752-15.238c-9.485-9.476-15.23-22.337-15.322-36.748C296.95,419.751,297.225,416.643,297.773,413.73z" style="fill: rgb(75, 75, 75);"></path> 73 </g> 74 </svg> 75 <div class="share-info-text">共有(share)</div> 76</button> 77 78<div class="popup-wrapper"> 79 <div class="popup-inside"> 80 <div class="close">x</div> 81 <div class="spread-information"> 82 <!-- LINE --> 83 <a class="sns-link" href="//timeline.line.me/social-plugin/share?url=&text=" target="_blank" rel="nofollow noopener noreferrer"> 84 <img src="./img/line.png"> 85 </a> 86 87 <!-- X --> 88 <a class="sns-link" href="//x.com/intent/post?text=&url=" target="_blank" rel="nofollow noopener noreferrer"> 89 <img src="./img/x.png"> 90 </a> 91 92 <!-- Facebook --> 93 <a class="sns-link" href="//www.facebook.com/sharer/sharer.php?u=&t=" target="_blank" rel="nofollow noopener noreferrer"> 94 <img src="./img/facebook.png"> 95 </a> 96 97 <!-- ピンタレスト --> 98 <a class="sns-link" href="//www.pinterest.com/pin/create/button/?url=&media=" target="_blank" rel="nofollow noopener noreferrer"> 99 <img src="./img/pinterest.png"> 100 </a> 101 102 <!-- reddit --> 103 <a class="sns-link" href="//www.reddit.com/submit?url=" target="_blank" rel="nofollow noopener noreferrer"> 104 <img src="./img/reddit.png"> 105 </a> 106 </div> 107 108 <!-- execCommandは廃止されている機能で利用が非推奨 --> 109 <!-- スマートフォンでHTMLタグのonclick属性の挙動がおかしくしっかり作動しないことがあるので、今回はbuttonタグで作成 --> 110 </div> 111</div> 112 113// 今開いてるページをシェア 114<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> 115 116<script> 117 const questShareButton = document.querySelector('.quest-shareButton'); 118 const popupWrapper = document.querySelector('.popup-wrapper'); 119 const close = document.querySelector('.close'); 120 121 // ボタンをクリックしたときにポップアップを表示させる 122 questShareButton.addEventListener('click', () => { 123 popupWrapper.style.display = "block"; 124 }); 125 126 // ポップアップの外側又は「x」のマークをクリックしたときポップアップを閉じる 127 popupWrapper.addEventListener('click', e => { 128 if (e.target.id === popupWrapper.id || e.target.id === close.id) { 129 popupWrapper.style.display = 'none'; 130 } 131 }); 132 133 let url = location.href 134 let snsLinks = $(".sns-link") 135 for (let i = 0; i < snsLinks.length; i++) { 136 let href = snsLinks.eq(i).attr('href'); 137 //シェアページのURL上書き 138 href = href.replace("u=", "u=" + url) //facebook 139 href = href.replace("url=", "url=" + url) //LINE,X,ピンタレスト,reddit 140 snsLinks.eq(i).attr('href', href); 141 } 142 143 //【JavaScript】URLをコピーするボタンを作る 144</script>
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
URLをコピーする、ボタンを押してURLを表示する方法は見つけられたのですが、イベントなしで表示する方法が分かりませんでした。
補足
回答2件
あなたの回答
tips
プレビュー