teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2018/05/21 22:46

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -1,4 +1,35 @@
1
1
  [extension#sendRequest](https://developer.chrome.com/extensions/extension#method-sendRequest)は非推奨メソッドなので、代わりにタブIDを指定して、
2
2
  [tabs#sendMessage](https://developer.chrome.com/extensions/tabs#method-sendMessage)を呼び出してください。
3
3
 
4
- `tabID`は`chrome.runtime.onMessage.addListener`の引数`sender`を`sender.tab.id`の形でも取得できます。
4
+ `tabID`は`chrome.runtime.onMessage.addListener`の引数`sender`を`sender.tab.id`の形でも取得できます。
5
+
6
+ ---
7
+ コンパイル通してないですが、手元の開発中のChrome拡張のソースからコピペするとこんな感じでしょうか。
8
+ ```JavaScript
9
+ chrome.contextMenus.create({
10
+ "title": "校正チェック",
11
+ "type": "normal",
12
+ "contexts": ["all"],
13
+ "onclick": function(info) {
14
+ chrome.tabs.getSelected(null, function(tab) {
15
+ // ★現在選択中のtab.idが必要なので、getSelectedメソッドの中にsendRequestを記述する。
16
+ alert("step1");
17
+ send_message(tab.id);
18
+ alert("step1");
19
+ });
20
+ }
21
+ });
22
+
23
+ function send_message(tabid){
24
+ chrome.tabs.sendMessage(tabid, {"action": "getName"}, (response) => {
25
+ console.log('ui');
26
+ });
27
+ }
28
+ ```
29
+ content_script側
30
+ ```JavaScript
31
+ chrome.runtime.onMessage.addListener((request, sender, sendResponse) => {
32
+ // やりたいこと。
33
+ return true;
34
+ });
35
+ ```