初めて自分の家と他人の家が違う、と意識した時

<script type="text/javascript" src="ttp://stat100.ameba.jp/now/screen/js/nowparts/nowparts.js"></script>
<script type="text/javascript">AbcNer.blogParts("batubatu",0,5,2,0);</script>

上記はアメブロのなうウィジットをコピーしたものです。IDは変更してます。

これを関数型風(function(){ ///処理 };)に書き換えたいので教えてください。


ちなみにhtmlの中に貼り付けるとちゃんと動作します。

外部ファイルの.jsの中に書き加えると動作しません。

A 回答 (1件)

ご提示のスクリプトタグは、


 1行目は外部スクリプトの読み込み
 2行目は関数(AbcNer.blogParts)を実行するスクリプト
となっています。

>これを関数型風(function(){ ///処理 };)に書き換えたいので
即時実行の匿名関数にしたいという意味でしょうか?
2行目はそのまま可能なので、論外として

1行目のファイルを見てみれば
 if (typeof AmNw == 'undefined') { var AmNw = {}; }
 AmNw.blogParts = function(引数群){ ~~ }
という構成になっていることがわかると思います。
この最初の行のAmNwは、(多分)いろいろなメソッドを収納するためのグローバルなオブジェクトだと推測されます。
それなので、ここを含めて匿名化すると、他からこのなかのblogPartsメソッドを呼び出そうとしても参照できなくなります。
2行目以降は匿名化しても問題ありませんが、(確認していませんが)グローバルな変数を使用してはいないと思いますので、匿名化する意味がないでしょう。

というわけで…
他から参照する必要が無ければ、全体を匿名化すればよいです。
この場合は、1行目自体が意味をなさなくなるので、直接に関数定義のみ実行すればよいでしょう。
他かから参照したい場合は、ファイルの内容をそのまま展開すればよいだけですが、わざわざ内部コードにする必要性が不明です。


質問の意味がよくわからなかったので、取り違えていたらスルーしてください。
    • good
    • 0
この回答へのお礼

私の力量不足で回答が理解できませんでしたが、最後の方の文はつかめた気がしました。
要はHTMLの中にスクリプトを書き込めということですね。

確かにこだわる必要はなかったと思います。

要領を得ない質問ですが、的を射て頂いてさすがです。
ありがとうございました。

お礼日時:2013/07/03 21:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!