Chromeの機能拡張を初めて作っているのですが,ブラウザのコンテキスト・メニューから選んだときにLightboxのような形で表示をして,その内容をiframeにできないかと考えています。
コンテント・スクリプトにURLを渡すことでiframeにページを表示させることはできるようになったのですが,そのiframe内のページではJavaScriptが動いていないようなのです。これを動かすにはどうしたらいいでしょうか?
パーミッションかなと調べたのですが,よく分かりませんでした。
初心者の質問で要領を得ていないかもしれませんがよろしくお願いします。
Andy
はじめまして。snskと申します。
> パーミッションかなと調べたのですが,よく分かりませんでした。
Same Origin Policy に引っかかってませんか?
https://developer.mozilla.org/ja/Same_origin_policy_for_JavaScript
対象としているiframeのホスト名が異なっていたりする場合 document オブジェクト以下をいじろうとすると失敗します。
ご参考まで。
2011年3月20日3:19 Andy Matsubara <andyma...@gmail.com>:
> --
> このメールは Google グループのグループ「Chrome API Developers JP」の登録者に送られています。
> このグループに投稿するには、chrome-api-d...@googlegroups.com にメールを送信してください。
> このグループから退会するには、chrome-api-develop...@googlegroups.com にメールを送信してください。
> 詳細については、http://groups.google.com/group/chrome-api-developers-jp?hl=ja からこのグループにアクセスしてください。
>
--
shi...@gmail.com - snsk
Andy
2011/3/20 Nori Hamamoto <nori...@gmail.com>:
ちなみに、Opera10以上、IE8以上もpostMessageをサポートしています。
あまり脚光を浴びることのないAPIですが、実は結構普及が進んでいます。
ただ、メッセージをやりとりする際のデータが形式が実装によってまちまちな点に注意が必要です。
上記のFirefoxのドキュメントには文字列データと書かれていますが、
最新の仕様ではany messageとなっていて文字列以外の大抵のデータをそのまま送信できます。
(正確にはstructured cloneアルゴリズムに従ってコピーされたデータが送信されます)
最近は仕様にあわせてオブジェクトをそのまま渡せる実装も増えていますが(もちろんChromeはOKです)、
無難に行くなら文字列でやり取りして、必要に応じてJSON.parse/stringifyを介してオブジェクトに変換すると良いでしょう。
折角なので、JSONとstructured cloneの違いについても書いておきます。
JSONは文字列・数値・真偽値・nullの4つの形式とそれらを含んだ配列・ハッシュという限られたデータ表現しか持っていません。
そのためJavaScriptにおけるDateオブジェクトや正規表現、CanvasのImageDataやFileAPIのBlobなどのデータ形式は(直接)JSON化できません。
対して、structured cloneはそういったJavaScriptのオブジェクトも基本的にコピー可能です(さすがにDOM
Nodeや関数とかは駄目ですが)。
ちょっと話がそれてしまいましたが、参考になれば幸いです。
2011年3月27日22:19 Nori Hamamoto <nori...@gmail.com>: