質問編集履歴

5

@run-at document-end を有効にすると、stackoverflowのコードの色や投稿する機能が使えなくなったり、ウェザーニュースの画像が正常に読み込めない等、汎用的な実用性はない為。

2022/11/04 07:48

投稿

Meli_ssa
Meli_ssa

score0

test CHANGED
File without changes
test CHANGED
@@ -18,7 +18,7 @@
18
18
  // @version 1.3.5
19
19
  // @description ←最も不要だと思うが、これ設定しないと叱られる
20
20
  // @match *://*/*
21
- // @run-at document-end
21
+ // @run-at document-start
22
22
  // @connect translate.google.com
23
23
  // @grant GM_xmlhttpRequest
24
24
  // ==/UserScript==
@@ -119,11 +119,11 @@
119
119
  server.rendered.push(container);
120
120
  googleUrl += `&tk=${token(text)}`;
121
121
  if (isJapan_customized_by_me(text)) {
122
- // 英語に対して日本語変換処理...
122
+ // 英語に対して日本語変換処理?
123
123
  ajax(googleUrl + '&tl=en&q=', encodeURIComponent(text), 1, container);
124
124
  // ajax(googleUrl + '&tl=ja&q=', encodeURIComponent(text), 1, container);
125
125
  } else if (countOfWord(text) !== 1) {
126
- // 多言語に対して日本語変換処理...
126
+ // 多言語に対して日本語変換処理?
127
127
  ajax(googleUrl + '&tl=' + target_language + '&dt=t&q=', encodeURIComponent(text), 1, container);
128
128
  }
129
129
  }

4

サポートページを追記。もうかっつかつです...これ以上容易に削れない

2022/10/02 11:03

投稿

Meli_ssa
Meli_ssa

score0

test CHANGED
File without changes
test CHANGED
@@ -4,11 +4,11 @@
4
4
  いちいちwindow.openで翻訳サイトに飛ばされる工数をショートカットできるという事実に、たいへん意義と価値を感じて気に入って使っています。
5
5
 
6
6
  しかし、`GM_xmlhttpRequest({ 何らかの通信処理 });`という形式にはめなければならず、現状ではTampermonkey系でしか使えない状態です。
7
- ネットで調べた情報によれば、この特有の関数は `new XMLHttpRequest();`のような役割を担っているとのことだったので`new XMLHttpRequest();`に置き換えて、Tampermonkey系からの依存度を減らしたい(例えばブックマークレットとかからも実行できるようにしたい...etc)と考えています。
7
+ ネットで調べた情報によれば、この特有の関数は `new XMLHttpRequest();`のような役割を担っているとのだったので`new XMLHttpRequest();`に置き換えて、Tampermonkey系からの依存度を減らしたい(例えばブックマークレットとかからも実行できるようにしたい...etc)と考えています。
8
-
8
+
9
- しかし、試してみても`null`「接続失敗」「通信失敗」という結果しか返ってきません。
9
+ しかし、試してみても`null`「接続失敗」という結果しか返ってきません。
10
-
10
+
11
- このことに関してお詳しい方、ご教示お願いできればと思います。
11
+ このに関してお詳しい方、ご教示お願いできればと思います。
12
12
 
13
13
  ### 該当のソースコード
14
14
  `Tampermonkey`
@@ -24,7 +24,7 @@
24
24
  // ==/UserScript==
25
25
 
26
26
  //「// @connect」は、某サイトの機能をユーザーが使うか確認するストッパー(安全装置)を取り外すような役割があり、なくても煩わしいだけで使える。
27
- // また、「// @connect」自体はTampermonkeyの設定「セキュリティ」→「@connect 文を確認: 」→「無効」に調整できる
27
+ // また、「// @connect」自体はTampermonkeyの設定「セキュリティ」→「@connect 文を確認: 」→「無効」に調整可能
28
28
 
29
29
  window.addEventListener('load', () => {
30
30
 
@@ -135,7 +135,7 @@
135
135
  value = value.replace(/^\s+|\s+$/gi, ""); // 先頭と末尾のスペースは単語としてカウントされない
136
136
  value = value.replace(/\s+/gi, " "); // 複数のスペースを 1 つのスペースに置き換え
137
137
  var length = 0; //更新回数
138
- var match = value.match(/\s/g); // 一致しない場合 null を返す
138
+ var match = value.match(/\s/g); // 一致しない場合 null を返す
139
139
  if (match) {
140
140
  length = match.length + 1;
141
141
  } else if (value) {
@@ -151,7 +151,7 @@
151
151
  }
152
152
 
153
153
 
154
- // Google 翻訳のトークン計算、token()
154
+ // Google 翻訳のトークン計算
155
155
  function token(a) {
156
156
  const b = 406644;
157
157
  const b1 = 3293161072;
@@ -202,7 +202,7 @@
202
202
  'cookie': ''
203
203
  };
204
204
 
205
- //---------------------------------------------------------//
205
+ //--------------------------------------------------------//
206
206
  // 試した事 ↓
207
207
 
208
208
  /*
@@ -220,7 +220,7 @@
220
220
  xhr.send(null);
221
221
  */
222
222
 
223
- //--↓ 以下から Tampermonkey依存の関数 ↓ ------------------//
223
+ //--↓ 以下から Tampermonkey依存の関数 ↓ -----------------//
224
224
 
225
225
  GM_xmlhttpRequest({
226
226
  method: method,
@@ -238,7 +238,7 @@
238
238
  }
239
239
  });
240
240
 
241
- //↑ 以上までがTampermonkey依存の関数 ↑ ----------------//
241
+ //↑ 以上までがTampermonkey依存の関数 ↑ ---------------//
242
242
 
243
243
  }
244
244
 
@@ -308,8 +308,10 @@
308
308
  ```
309
309
 
310
310
  ### 補足
311
- ただ今、試したところ
311
+ 追記ですが
312
312
  Greasemonkeyとの互換性はありません。
313
313
  Violentmonkeyとの互換性はあります。
314
314
 
315
-
315
+ ホームを追記します
316
+ https://www.tampermonkey.net/documentation.php#GM_xmlhttpRequest
317
+

3

説明するまでもない微々たること

2022/10/01 18:46

投稿

Meli_ssa
Meli_ssa

score0

test CHANGED
File without changes
test CHANGED
@@ -27,6 +27,7 @@
27
27
  // また、「// @connect」自体はTampermonkeyの設定「セキュリティ」→「@connect 文を確認: 」→「無効」に調整できる。
28
28
 
29
29
  window.addEventListener('load', () => {
30
+
30
31
  'use strict';
31
32
  var target_language = 'auto'; // 翻訳targetは、的を絞らず多言語に対応したいので auto
32
33
  // 以下は元のURLから &tl=ja を語尾にくっつけただけ。↓
@@ -203,6 +204,7 @@
203
204
 
204
205
  //---------------------------------------------------------//
205
206
  // 試した事 ↓
207
+
206
208
  /*
207
209
  var xhr = new XMLHttpRequest();
208
210
  xhr.onload = function (res) {
@@ -301,7 +303,6 @@
301
303
  }
302
304
  }; // 翻訳サーバーの終了
303
305
 
304
-
305
306
  });
306
307
 
307
308
  ```

2

主に文章の段落的な区切りを1つ1つ、より強調する為に敢えて更にスペース追加

2022/10/01 18:25

投稿

Meli_ssa
Meli_ssa

score0

test CHANGED
File without changes
test CHANGED
@@ -41,8 +41,9 @@
41
41
  'margin:4px!important;' +
42
42
  'cursor: pointer;' +
43
43
  '';
44
- icon.innerHTML = // <svg><path> がダラダラ長過ぎるので <img> に変更
45
- '<img src="https://storage.googleapis.com/gweb-uniblog-publish-prod/images/Translate_logo.max-500x500.png" style="width:23px; height:23px; margin-top:5px;margin-left:5px; cursor: pointer; ">';
44
+
45
+ icon.innerHTML = // <svg><path> がダラダラ長過ぎるので <img> に変更
46
+ '<img src="https://storage.googleapis.com/gweb-uniblog-publish-prod/images/Translate_logo.max-500x500.png" style="width:23px; height:23px; margin-top:5px;margin-left:5px; cursor: pointer; ">';
46
47
 
47
48
  icon.setAttribute('style', '' +
48
49
  'width:32px!important;' +
@@ -54,8 +55,9 @@
54
55
  'position:absolute!important;' +
55
56
  'z-index:2147483647!important;' +
56
57
  '');
57
- // DOM に翻訳アイコンを追加する
58
+ // DOM に翻訳アイコンを追加する
58
- document.documentElement.appendChild(icon);
59
+ document.documentElement.appendChild(icon);
60
+
59
61
 
60
62
  // マウス イベント: 選択したテキストが消えるのを防ぐ
61
63
  document.addEventListener('mousedown', (e) => {
@@ -65,6 +67,7 @@
65
67
  }
66
68
  });
67
69
 
70
+
68
71
  // 選択変更イベント: 選択したテキストをクリックすると、翻訳アイコンと翻訳パネルが非表示に。
69
72
  document.addEventListener("selectionchange", () => {
70
73
  if (!window.getSelection().toString().trim()) {
@@ -72,6 +75,7 @@
72
75
  server.containerDestroy();
73
76
  }
74
77
  });
78
+
75
79
 
76
80
  // マウス イベント: 選択したテキストが消えるのを防ぐ; 翻訳アイコンを表示、非表示に。
77
81
  document.addEventListener('mouseup', (e) => {
@@ -95,6 +99,7 @@
95
99
  server.containerDestroy(); // 翻訳コンテンツ パネルを破棄
96
100
  }
97
101
  });
102
+
98
103
 
99
104
  // 翻訳アイコンクリックイベント
100
105
  icon.addEventListener('click', (e) => {
@@ -111,10 +116,7 @@
111
116
  container.style.left = document.body.clientWidth - 350 + 'px';
112
117
  document.body.appendChild(container);
113
118
  server.rendered.push(container);
114
-
115
-
116
119
  googleUrl += `&tk=${token(text)}`;
117
-
118
120
  if (isJapan_customized_by_me(text)) {
119
121
  // 英語に対して日本語変換処理...?
120
122
  ajax(googleUrl + '&tl=en&q=', encodeURIComponent(text), 1, container);
@@ -126,13 +128,11 @@
126
128
  }
127
129
  });
128
130
 
131
+
129
132
  function countOfWord(str) {
130
133
  var value = String(str);
131
-
132
134
  value = value.replace(/^\s+|\s+$/gi, ""); // 先頭と末尾のスペースは単語としてカウントされない
133
-
134
135
  value = value.replace(/\s+/gi, " "); // 複数のスペースを 1 つのスペースに置き換え
135
-
136
136
  var length = 0; //更新回数
137
137
  var match = value.match(/\s/g); // 一致しない場合は null を返す
138
138
  if (match) {
@@ -143,10 +143,12 @@
143
143
  return length;
144
144
  }
145
145
 
146
+
146
147
  function isJapan_customized_by_me(str) {
147
148
  var reg = /^([\u4E00-\u9FA5]|[\uFF00-\uFF20]|[\u3000-\u301C])+$/;
148
149
  return !!reg.test(str);
149
150
  }
151
+
150
152
 
151
153
  // Google 翻訳のトークン計算、token()
152
154
  function token(a) {
@@ -172,6 +174,7 @@
172
174
  return a.toString() + jd + (a ^ b);
173
175
  }
174
176
 
177
+
175
178
  // Google 翻訳のトークン計算、token()
176
179
  function RL(a, b) {
177
180
  const t = "a";
@@ -199,8 +202,7 @@
199
202
  };
200
203
 
201
204
  //---------------------------------------------------------//
202
- // 試した事
205
+ // 試した事
203
-
204
206
  /*
205
207
  var xhr = new XMLHttpRequest();
206
208
  xhr.onload = function (res) {
@@ -241,6 +243,7 @@
241
243
 
242
244
  // この辺りの内容を大幅省略
243
245
 
246
+
244
247
  // Google 翻訳エンジン
245
248
  function google(rst, element) {
246
249
  var json = JSON.parse(rst),
@@ -251,6 +254,7 @@
251
254
  displaycontainer(html, element);
252
255
  store_ajax(word, html, element);
253
256
  }
257
+
254
258
 
255
259
  function displaycontainer(text, element) {
256
260
  element.innerHTML = text;
@@ -270,6 +274,7 @@
270
274
  }
271
275
  }
272
276
  },
277
+
273
278
  // 翻訳結果パネル DOM を生成 (この時点ではまだページに追加されていない)
274
279
  container: function() {
275
280
  var div = document.createElement('div');
@@ -295,6 +300,8 @@
295
300
  return div;
296
301
  }
297
302
  }; // 翻訳サーバーの終了
303
+
304
+
298
305
  });
299
306
 
300
307
  ```

1

Tampermonkey以外にスクリプトの互換性のあるツールについて

2022/10/01 15:30

投稿

Meli_ssa
Meli_ssa

score0

test CHANGED
File without changes
test CHANGED
@@ -27,14 +27,14 @@
27
27
  // また、「// @connect」自体はTampermonkeyの設定「セキュリティ」→「@connect 文を確認: 」→「無効」に調整できる。
28
28
 
29
29
  window.addEventListener('load', () => {
30
- 'use strict';
30
+ 'use strict';
31
- var target_language = 'auto'; // 翻訳targetは、的を絞らず多言語に対応したいので auto
31
+ var target_language = 'auto'; // 翻訳targetは、的を絞らず多言語に対応したいので auto
32
- // 以下は元のURLから &tl=ja を語尾にくっつけただけ。↓
32
+ // 以下は元のURLから &tl=ja を語尾にくっつけただけ。↓
33
- var googleUrl = 'https://translate.google.com/translate_a/single?client=gtx&dt=t&dt=bd&dj=1&source=input&hl=auto&sl=auto&tl=ja';
33
+ var googleUrl = 'https://translate.google.com/translate_a/single?client=gtx&dt=t&dt=bd&dj=1&source=input&hl=auto&sl=auto&tl=ja';
34
- var iconSize = 24;
34
+ var iconSize = 24;
35
- var translationTestSize = 16;
35
+ var translationTestSize = 16;
36
- var icon = document.createElement('div');
36
+ var icon = document.createElement('div');
37
- var word = '';
37
+ var word = '';
38
38
  var style = '' +
39
39
  'width:23px;' +
40
40
  'height:23px;' +
@@ -105,14 +105,14 @@
105
105
  // 新しい翻訳コンテンツ パネルを作成。
106
106
  var container = server.container();
107
107
  container.style.top = e.pageY + 'px';
108
- if (e.pageX + 350 <= document.body.clientWidth) //コンテナ パネルの CSS の最大幅 250px。
108
+ if (e.pageX + 350 <= document.body.clientWidth) //コンテナ パネルの最大幅 250px。
109
109
  container.style.left = e.pageX + 'px';
110
110
  else
111
111
  container.style.left = document.body.clientWidth - 350 + 'px';
112
112
  document.body.appendChild(container);
113
113
  server.rendered.push(container);
114
114
 
115
- //
115
+
116
116
  googleUrl += `&tk=${token(text)}`;
117
117
 
118
118
  if (isJapan_customized_by_me(text)) {
@@ -216,7 +216,7 @@
216
216
  xhr.send(null);
217
217
  */
218
218
 
219
- //--↓ 以下から Tampermonkey依存の関数 ↓ -------------------//
219
+ //--↓ 以下から Tampermonkey依存の関数 ↓ ------------------//
220
220
 
221
221
  GM_xmlhttpRequest({
222
222
  method: method,
@@ -234,7 +234,7 @@
234
234
  }
235
235
  });
236
236
 
237
- //↑ 以上までがTampermonkey依存の関数 ↑ -----------------//
237
+ //↑ 以上までがTampermonkey依存の関数 ↑ ----------------//
238
238
 
239
239
  }
240
240
 
@@ -250,7 +250,6 @@
250
250
  }
251
251
  displaycontainer(html, element);
252
252
  store_ajax(word, html, element);
253
- // alert('送信成功');
254
253
  }
255
254
 
256
255
  function displaycontainer(text, element) {
@@ -271,7 +270,7 @@
271
270
  }
272
271
  }
273
272
  },
274
- // 翻訳結果パネル DOM を生成 (この時点ではまだページに追加されていない)
273
+ // 翻訳結果パネル DOM を生成 (この時点ではまだページに追加されていない)
275
274
  container: function() {
276
275
  var div = document.createElement('div');
277
276
  div.setAttribute('style', '' +
@@ -300,3 +299,9 @@
300
299
 
301
300
  ```
302
301
 
302
+ ### 補足
303
+ ただ今、試したところ
304
+ Greasemonkeyとの互換性はありません。
305
+ Violentmonkeyとの互換性はあります。
306
+
307
+