質問編集履歴

4

ソース修正

2018/05/02 06:04

投稿

tobisumi
tobisumi

スコア6

test CHANGED
File without changes
test CHANGED
@@ -32,7 +32,13 @@
32
32
 
33
33
  ```
34
34
 
35
+ ・上記サイトを参考にテスト用に書いてみましたが、ページ内で選択した文字列は取得できるのですが、
36
+
35
- 実行しても空の状態でconsole.log にはundefineとなってしまいます
37
+ ページ内で複数選択されてまっいる場合には、すべの選択文字が取得されてしまう。
38
+
39
+
40
+
41
+ ・textareaにある文字を選択すると複数回ポップアップしてしまう。
36
42
 
37
43
  ```
38
44
 
@@ -42,50 +48,198 @@
42
48
 
43
49
 
44
50
 
51
+ ※当初より修正をしました
52
+
45
53
  ```javascript
46
54
 
47
55
  javascript:(function(){
48
56
 
49
-
57
+ var selected=0;
58
+
50
-
59
+ traceFrames(window);
60
+
61
+ if(!selected){
62
+
63
+ var q=prompt('please input text.');
64
+
65
+ if(q){
66
+
67
+ openWindow(q);
68
+
69
+ }
70
+
71
+ }
72
+
73
+
74
+
75
+ function traceFrames(w){
76
+
77
+ getSelectedText(w);
78
+
51
- var win=window.open();
79
+ var flen=w.frames.length;
52
-
80
+
53
- var sel=(window.getSelection && window.getSelection());
81
+ for(var i=0;i<flen;i++){
82
+
54
-
83
+ traceFrames(w[i]);
84
+
85
+ }
86
+
87
+ }
88
+
89
+
90
+
55
- var ID=window.getSelection();
91
+ function getSelectedText(w){
56
-
92
+
57
- var str="";
93
+ var t=0;
58
-
59
-
60
-
94
+
61
- if(ID!=""){
95
+ try{
62
-
96
+
63
- str=ID.toString();
97
+ t=w.getSelection().toString();
98
+
64
-
99
+ }catch(e){
100
+
101
+ return;
102
+
103
+ }
104
+
105
+ if(t){
106
+
107
+ openWindow(t);
108
+
65
- }else{
109
+ }else{
66
-
110
+
67
- var form_focused_elm=document.activeElement;
111
+ var form_focused_elm = document.activeElement;
68
-
112
+
69
- if(!!form_focused_elm.value){
113
+ if( !!form_focused_elm.value ){
70
-
114
+
71
- str=form_focused_elm.value.substring(form_focused_elm.selectionStart,form_focused_elm.selectionEnd);
115
+ t=form_focused_elm.value.substring(form_focused_elm.selectionStart, form_focused_elm.selectionEnd);
116
+
72
-
117
+ openWindow(t);
118
+
73
- }
119
+ }
74
-
120
+
75
- }
121
+ }
122
+
76
-
123
+ }
124
+
125
+
126
+
127
+ function openWindow(q){
128
+
129
+ selected++;
130
+
77
- ~~~処理~~~
131
+ alert(q);
132
+
133
+ }
78
134
 
79
135
  })();
80
136
 
81
137
  ```
82
138
 
139
+ ---
140
+
141
+ **test用ページ**
142
+
143
+ 以下のテストページですべての個所で取得できればよいと考えております。
144
+
145
+
146
+
147
+ ```html
148
+
149
+ test.html
150
+
151
+
152
+
153
+ <html>
154
+
155
+ <body>
156
+
157
+ <p>12345</p>
158
+
159
+ <iframe src="./test1.html"></iframe>
160
+
161
+ <iframe src="./test2.html"></iframe>
162
+
163
+ <iframe src="./test3.html"></iframe>
164
+
165
+ <form action="" method="post">
166
+
167
+ <textarea name="test" rows="4" cols="40"></textarea><br>
168
+
169
+ </form>
170
+
171
+ </body>
172
+
173
+ </html>
174
+
175
+
176
+
177
+ ------------------------------
178
+
179
+ test1.html
180
+
181
+ ------------------------------
182
+
183
+ <html>
184
+
185
+ <body>
186
+
187
+ <a> 123456789 </a>
188
+
189
+ </body>
190
+
191
+ </html>
192
+
193
+
194
+
195
+ ------------------------------
196
+
197
+ test2.html
198
+
199
+ ------------------------------
200
+
201
+ <html>
202
+
203
+ <body>
204
+
205
+ <a> 01234567890 </a>
206
+
207
+ </body>
208
+
209
+ </html>
210
+
211
+
212
+
213
+ ------------------------------
214
+
215
+ test3.html
216
+
217
+ ------------------------------
218
+
219
+ <html>
220
+
221
+ <body>
222
+
223
+ <form action="" method="post">
224
+
225
+ <textarea name="test3" rows="4" cols="40"></textarea><br>
226
+
227
+ </form>
228
+
229
+ </body>
230
+
231
+ </html>
232
+
233
+ ```
234
+
83
235
 
84
236
 
85
237
  ### 試したこと
86
238
 
87
239
 
88
240
 
241
+ ```
242
+
89
243
 
90
244
 
91
245
  ### 補足情報(FW/ツールのバージョンなど)

3

本文修正

2018/05/02 06:04

投稿

tobisumi
tobisumi

スコア6

test CHANGED
File without changes
test CHANGED
@@ -17,6 +17,8 @@
17
17
  ・ページ内のどの箇所でも(本文やtextareaなど)取得したい
18
18
 
19
19
  ・iframeを含めすべて同一ドメイン
20
+
21
+ ・こちらのページを参考もしてみましたが、注意書きにあるようにテキストが複数選択された場合の挙動などでうまく解決できませんでした(http://www.akatsukinishisu.net/itazuragaki/js/get_selected_text.html)
20
22
 
21
23
 
22
24
 

2

本文一部修正

2018/05/01 09:07

投稿

tobisumi
tobisumi

スコア6

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,11 @@
12
12
 
13
13
  ・現在focusされて選択されている文字列だけを取得できるようにしたいです。
14
14
 
15
+ (複数個所が選択されている場合に現在選択している箇所のみ)
16
+
15
- ・ページ内のどの箇所でも(本文やtextareaなど)
17
+ ・ページ内のどの箇所でも(本文やtextareaなど)取得したい
18
+
19
+ ・iframeを含めすべて同一ドメイン
16
20
 
17
21
 
18
22
 

1

タイトル修正、本文追加

2018/05/01 09:04

投稿

tobisumi
tobisumi

スコア6

test CHANGED
@@ -1 +1 @@
1
- javascriptでiframe内の選択文字を取得
1
+ javascriptで複数のiframeを含むページから選択文字を取得
test CHANGED
File without changes