回答編集履歴

1

evalを使った対処について記述を追加

2018/01/31 01:59

投稿

defghi1977
defghi1977

スコア4756

test CHANGED
@@ -5,3 +5,19 @@
5
5
 
6
6
 
7
7
  JSONP側の仕様が「グローバル変数の`jsonCallback`の内容をコールバックとして実行する」となっており, これをローカル変数として隠蔽することは出来ません.
8
+
9
+
10
+
11
+ ---
12
+
13
+ なおJSONPコードを**直接テキストとして入手**し, `eval`関数で実行すればローカル変数`jsonCallback`に設定されたコールバック関数を呼び出すことができるかもしれません.
14
+
15
+
16
+
17
+ ※但しこの場合においては**クロスオリジンでのデータ入手**となるので, サーバー側の設定によってはうまく行かないでしょう.
18
+
19
+
20
+
21
+ NOTE:
22
+
23
+ JSONPは`script`要素が外部ドメインのソースコードを直接読み込む挙動を利用したデータ授受なので, その代償としてグローバル変数を(一つ)汚染してしまうのは仕方ありません.