※ ChatGPTを利用し、要約された質問です(原文:動的に生成したscriptのエラーを処理する方法)
動的に生成したscriptのエラーを処理する方法
このQ&Aのポイント
アメブロの特殊環境に限った超マイナーケースで、スクリプトを書けるようにするプラグインを公開しています。
プラグインを使用する際は、<script>が有効なスペースにこのプラグインを設置し、<script>が禁止されている場所では代わりに<script>タグを使用します。
<script>が複数ある場合にエラーが発生した場合、このプラグインが生成した全ての<script>が動作しなくなる問題があります。例外処理やエラーの捕捉が困難な状況です。
アメブロの特殊環境に限った超マイナーケースです。
私はアメブロのスクリプトを記述できない場所にも
スクリプトを書けるようにするプラグインを公開しています。
使い方は、<script>が有効なスペースにこのプラグインを設置して、
<script>が禁止されている場所では代わりに<cript>タグを使ってコードを記述してもらいます。
ページを読み込むとプラグインが<cript>タグの中身を<script>に
innnerHTMLで突っ込んでappendChildします。
問題は、<cript>が複数ある場合にどれか一つがスクリプトエラーを起こしたら、
このプラグインが生成した<script>全てが動作しなくなります。
例外処理ができればいいのですが、onerrorやjQueryのerror()でエラーを捕まえられません。
appendChildをtryに入れてもcatchしません。
すごくややこしい状況ですがご教授いただけると助かります。
一応、プラグインの解説記事のURL貼っておきます。
http://ameblo.jp/kurepelin/entry-11417965476.html
よろしくお願いいたします。
お礼
回答ありがとうございます。 fujillinさんの回答を読んでからよく確認したら、 他のスクリプトは動作していました。 結果のわかりづらいサンプルコードを使っていたので 気が付きませんでした… 本当にお恥ずかしい限りです。 IE6対応はさせていませんがinnerHTMLダメなんですね。 >そもそも、スクリプトを記述できる場所があってDOMにアクセス可能みたいなので、最初から全てのスクリプトをそこに記述するのがノーマルな発想ではないでしょうか。 普通は確かにそうです。こんなプラグインを作った理由は、 アメブロにはスクリプトタグOKスペースが半角3800字分しかないからなんです。 そこで、無難なタグなら記述できる他のスペース(半角1万字)にも スクリプトを記述できるようにしようと考えたのです。 画像以外のファイルはアップロードできないのでサーバーを借りないと jsファイルの外部化も難しいです。 このプラグインのjsファイルは私が借りてるサーバーにおいています。 appendChildをtryに入れてもcatchしません、の意味は try{ document.body.appendChild(生成したスクリプトタグ); }catch(e){ alert(e); } で構文エラーを起こしてもアラートしない、ということでした。 今読み返したら確かに訳わからない文章ですね。 申し訳ありません。 それで、新たに var text="取得したコードのテキスト"; try{ eval(text); }catch(e){ alert(e); } で構文エラーを起こしてみましたがalertしません。 ただ、他のスクリプトが動いているのでプラグインとしては問題が解決しました。 おっしゃる通り、あらゆるスクリプトへの一律処理は難しいですね。 ブログカテゴリで質問中なのですが、同じプラグインで Flash設置のための外部jsファイルのdocument.writeを実行する方法はまだ見つかっていません。 jQueryから始めてプログラム歴2ヶ月なのでわからないことだらけです。 他の質問でまたお世話になるかもしれませんのでその時はよろしくお願いします。