回答編集履歴

1

コードを追加しました。

2017/12/17 03:24

投稿

退会済みユーザー
test CHANGED
@@ -1,3 +1,7 @@
1
+ すみません嘘書きました。
2
+
3
+
4
+
1
5
  方法①についてこうすれば出来ます。
2
6
 
3
7
  manifest.json:
@@ -38,6 +42,72 @@
38
42
 
39
43
  そもそもbackground.jsはウィンドウと隔離した状態で実行されているため、
40
44
 
41
- alert()しても表示されることはありません。
45
+ ~~alert()しても表示されることはありません。~~キーボードイベントはキャッチ出来ません。
42
46
 
43
47
  逆に上記のスクリプトはコンテンツの上で実行されるため、予期せぬ動作を生む可能性があります。
48
+
49
+
50
+
51
+ 方法①の改良としては、content scriptとbackground.jsの通信を利用することになります。
52
+
53
+ manifest.json:
54
+
55
+ ```JSON
56
+
57
+ "background": {
58
+
59
+ "scripts": ["background.js"],
60
+
61
+ "persistent": false
62
+
63
+ },
64
+
65
+ "content_scripts": [
66
+
67
+ {
68
+
69
+ "matches": ["<all_urls>"],
70
+
71
+ "js": ["keydown_send.js"]
72
+
73
+ }
74
+
75
+ ]
76
+
77
+ ```
78
+
79
+ keydown_send.js:
80
+
81
+ ```JavaScript
82
+
83
+ window.addEventListener("keydown", function(e){
84
+
85
+ //Ctrl+Entrが押されたとき、backgroundページにメッセージを送る
86
+
87
+ if(e.ctrlKey && e.keyCode === 13){
88
+
89
+ chrome.runtime.sendMessage({command: "Ctrl+Enter"});
90
+
91
+ }
92
+
93
+ });
94
+
95
+ ```
96
+
97
+ background.js:
98
+
99
+ ```JavaScript
100
+
101
+ chrome.runtime.onMessage.addListener(function(message){
102
+
103
+ if(message.command === "Ctrl+Enter"){
104
+
105
+ alert();
106
+
107
+ }
108
+
109
+ });
110
+
111
+ ```
112
+
113
+ 方法②ではEnterの使用が許可されていないため難しいと思います。