Google マップを動的に読み込み、ダイアログ オーバーレイに表示するブックマークレットを作成しようとしています。ブックマークレット JavaScript が読み込まれるのと同じサイト (この場合は localhost) で実行すると問題なく動作しますが、たとえば NYTimes.com などのサードパーティのサイトにアクセスするとうまくいきません。Firebug に HTTP エラーは表示されませんが、ブックマークレット コードが新しい google.maps オブジェクトをインスタンス化しようとすると、コンソールに次のメッセージが表示されます。
TypeError: google.maps is undefined
違法なクロスドメイン呼び出しを試みているのですか、それとも実装に問題がある可能性がありますか?
これは、ブックマークレット ブートローダーからマップ スクリプトをロードするコードです。
var mapsScript = document.createElement("script");
mapsScript.type = "text/javascript";
mapsScript.src = "http://maps.googleapis.com/maps/api/js?libraries=places&key=KEY&sensor=true&callback=CALLBACK";
document.body.appendChild(mapsScript);
その後、コールバックには次の行があります。
var center = new google.maps.LatLng(la, ln);