iframeを含むページで、iframeの中のコンテンツを操作するブックマークレットを作りたいヤバゲーで遊んでいます。ここのゲームは、コンテンツがymbga_appというidのiframeの中に収まっています。フレームを外すと、直接、ブックマークレットで操作できますが、フレームを外すと、ヤバゲーとの間で何かコソコソやり取りしているようで、それがタイムアウトしてしまい、再度、フレームごと読み直さないといけないので面倒です。たとえば、ymbga_appのゲーム内にある、divclass="coin"というアイテムがあるとして、これをクリックしたい場合、jQueryが使われているゲームならば、document.location="javascript:$('.coin').click()"とすればいいし、複数あってもまとめてクリックしてくれるので、そういう小物はブックマークレットのほうが便利なので、機能拡張(ChromeやFirefoxのグリモン)にしていません。frames['ymbga_app'].location="javascript:$('.coin').click()"とすると、UnsafeJavaScriptattempttoaccessframewithURLhttp:/(略).app.mbga-platform.jp/gadgets/ifr?
蔑?fromframewithURL(略).Domains、protocolsandportsmustmatch.という風にセキュリティの問題で弾かれているようです。うまい方法はありませんか?当たり前ですが、ゲームコンテンツの開発者ではないので、そちらに細工することはできません。
ベストアンサー
ブックマークレットは、開いているウェブページのドメインで実行されます。なので、そこに表示されているiframeが別ドメインの場合にはアクセスできません。これはクロスサイトスクリプティングという攻撃を回避するためのセキュリティ対策です。グリースモンキー等の機能拡張であればブラウザレベルで実行されるので、上記のセキュリティ対策を回避することができます。
PR