ページ内JavaScriptエラーの回避

980 views
Skip to first unread message

kamagasako

unread,
Jul 3, 2011, 5:31:45 AM7/3/11
to Chrome API Developers JP
鎌ヶ迫と申します。
皆さんはじめまして。

content scriptを開発しているのですが、chromeで開いたページでJavaScriptのエラーが発生すると
content scriptが実行されないという問題があります。具体的には、Google Adsenseが貼られたページで

Unable to post message to http://googleads.g.doubleclick.net.
Recipient has origin http://***

のようなエラーが発生すると、content scriptが呼ばれない(実行されない)ように見えます。
# 上記エラーはJavascriptコンソールからコピペしました。

このように元々のページでエラーが発生してもcontent scriptを実行させる方法はありませんでしょうか?
なお、このcontent scriptは run_at は指定していません。

Shogo Ohta

unread,
Jul 3, 2011, 11:39:45 PM7/3/11
to chrome-api-d...@googlegroups.com
鎌ヶ迫さん、こんにちは。



content scriptを開発しているのですが、chromeで開いたページでJavaScriptのエラーが発生すると
content scriptが実行されないという問題があります。具体的には、Google Adsenseが貼られたページで
私の知る限りでは、JavaScriptのエラーが発生しただけでContentScriptが実行されなくなるということは経験がありません。
おそらく、別の要因が絡んでいるのではないかと思うのですが、その原因を調べるための情報がないので、
問題を再現するための最小限のサンプルとページを提示して頂けると解決できるかもしれません。

Masatoshi KAMAGASAKO

unread,
Jul 4, 2011, 12:25:49 AM7/4/11
to chrome-api-d...@googlegroups.com
Ohtaさん
ご回答ありがとうございます。

> 私の知る限りでは、JavaScriptのエラーが発生しただけでContentScriptが実行されなくなるということは経験がありません。

とのことでしたので、まずはalert()でエラーダイアログを出すだけのContent Scriptを作って確認してみましたところ、
問題なくalertダイアログが表示され、確かに再現しませんでした。ソースコードを見直したところ、JavaScriptのエラー
で止まるContent ScriptではjQueryの

$(function() { ~

でメインの処理を呼び出しており、これをコメントアウトすることでJavaScriptがエラーを返すページでも問題なく
Content Scriptが呼び出されるようになりました。JavaScriptでエラーが発生したことで$()に渡したコールバック
が呼ばれなかった?のが原因のようですが、そもそもmanifest.jsonのrun_atでContent Scriptの呼び出される
タイミングが指定されるのに$()を使っていたのが原因のようです。

お蔭様で解決しました。
ご助言ありがとうございました。

2011年7月4日12:39 Shogo Ohta <os0...@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
> からこのグループにアクセスしてください。
>

--
kamagasako

Reply all
Reply to author
Forward
0 new messages