質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%

Q&A

解決済

1回答

1519閲覧

コンテキストメニュー実行時に、実行したページ上の hidden 値を取得したい

ASP.NET

総合スコア24

Chrome extension

Chrome拡張機能

0グッド

0クリップ

投稿2020/04/25 10:32

Windows 10 Pro
Google Chrome ver.81 および Microsoft Edge ver.81

右クリックで実行する処理の際に、ページ上の以下の hidden の値を取得する処理を作成しました。

html

1<input type='hidden' name="customer_id" value='1234' />

このページは、javascriptの「window.open()」で開かれているページで、「customer_id」が異なるページが同時にいくつも開いています。以下が作成したものです。ページが1つだけの時はうまくいきます。3つも4つも開かれたときは、うまくいったりいかなかったりまちまちです。右クリックを実行したページの hidden の値を確実に取得したいと思っております。

json

1{ 2//manifest.json 3 "name": "顧客ID取得", 4 "version": "1.0", 5 "icons": { 6 "19" : "img/icon19.png", 7 "32" : "img/icon32.png", 8 "38" : "img/icon38.png", 9 "48" : "img/icon48.png", 10 "128": "img/icon128.png" 11 }, 12 "description": "顧客IDをクリップボードにコピーします", 13 "background" : { 14 "scripts" : ["js/background.js"] 15 }, 16 "content_scripts":[{ 17 "matches":["https://hogehoge.com/*"], 18 "js":["js/content.js"] 19 }], 20 "permissions" : ["contextMenus", "https://hogehoge.com/*"], 21 "author": "Hoger", 22 "manifest_version": 2 23}

javascript

1//content.js 2chrome.runtime.sendMessage({ 3 value: document.getElementsByName('customer_id')[0].value 4});

javascript

1//background.js 2var customer_id = ''; 3 4chrome.runtime.onMessage.addListener( 5 function (request, sender, sendResponse) { 6 customer_id = request.value; 7 } 8); 9 10const parent_menu = chrome.contextMenus.create({ 11 type: "normal", 12 id: "hoge", 13 title: "顧客関連" 14}); 15chrome.contextMenus.create({ 16 id : "hoge1", 17 parentId: parent_menu, 18 title : "顧客コードコピー", 19 type : "normal", 20 contexts : ["all"] 21}); 22 23chrome.contextMenus.onClicked.addListener((info, tab) => { 24 switch(info.menuItemId){ 25 case 'hoge1': 26 copyTextToClipboard(customer_id); 27 break; 28 default: 29 } 30}); 31 32/* 33クリップボードにコピーする 34*/ 35function copyTextToClipboard(textVal){ 36 var copyFrom = document.createElement("textarea"); 37 copyFrom.textContent = textVal; 38 var bodyElm = document.getElementsByTagName("body")[0]; 39 bodyElm.appendChild(copyFrom); 40 copyFrom.select(); 41 var retVal = document.execCommand('copy'); 42 bodyElm.removeChild(copyFrom); 43 return retVal; 44}

よろしくお願い申し上げます。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

どうにもならないのでやり方を変えました。sessionStorage を使う事にしました。Window のタイトルには顧客名が入っている為、window.open 時に、顧客名と顧客コードをセットで sessionStorage に追加。

右クリック時は、window のタイトルは拾えることから、顧客名を元に顧客コードを sessionStorage から取得する事に致しました。

投稿2020/04/26 08:34

編集2020/04/26 08:35
ASP.NET

総合スコア24

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問