Ameblo Hacks ~アメブロを10倍楽しむために努力するブログ~ -46ページ目

フリープラグインの文字数制限以上のjavascriptを実行してみる

Ajax
Creative Commons License photo credit: Franco Folini

フリープラグインはアメブロでjavascriptを記述できる唯一のスペースです。
しかし、文字数制限があるため、本格的なプログラムを書くことはできません。
ブログパーツを埋め込むための<script>タグにも文字数制限がありますので、気に入ったブログパーツもいずれは削る時が来るかもしれません。

ん・・・?なんだかどちらのパターンも滅多になさそうな気がしてきましたが・・・折角だから話を進めてみましょう。


madtag

今回のハックは、その文字数制限を回避する方法です。
簡単に言うと、フリープラグイン以外の場所にjavascriptを書いて読み込みます。
その場所とは・・・過去の記事です。

直接javascriptのコードを書く場合と、外部javascriptを読み込む場合とで方法が違います。
それぞれの場合に分けて説明します。

直接javascriptのコードを書く


最初に「記事を書く」から新規記事を作成します。
記事の中身はこのように書いてください。
**javascript_section**

//ここに任意のjavascriptコードを書きます

**javascript_section**


下の写真のような感じです。

$Ameblo Hacks ~アメブロを10倍楽しむために努力するブログ~

この記事が最新記事として表示されないように、日付を古く設定してから公開します。

$Ameblo Hacks ~アメブロを10倍楽しむために努力するブログ~

次に、先ほど書いた記事のページを開き、URLをメモしておきます。

$Ameblo Hacks ~アメブロを10倍楽しむために努力するブログ~

最後にフリープラグインに以下のコードを記述します。
url:の部分にはさっきメモしたURLを書いてください
<script type="text/javascript">
$.ajax({
url: "http://ameblo.jp/~",
cache: true,
success: function(html){
eval(html.split("**javascript_section**")[1].replace(/<br \/>/g,""));
}
});
</script>

すると・・・

$Ameblo Hacks ~アメブロを10倍楽しむために努力するブログ~

きちんとjavascriptが実行されました!
ブログのどのページを開いても実行されます。

では次に、外部javascriptを実行してみましょう。

外部javascriptを読み込む


今回は例として
<script type="text/javascript" src="http://t-rix.net/te/exjs.js"></script>
<script type="text/javascript" src="http://t-rix.net/te/exjs2.js"></script>
この2つの外部javascriptタグを実行する実験をしてみます。

こちらも最初に「記事を書く」から新規記事を作成します。
記事の中身はこのように書いてください。
***external_js_section***

*url*http://t-rix.net/te/exjs.js
*url*http://t-rix.net/te/exjs2.js

***external_js_section***

実行したい外部javascriptの数だけ、↓のように同じ書式でurlを追記できます。
***external_js_section***

*url*http://t-rix.net/te/exjs.js
*url*http://t-rix.net/te/exjs2.js
*url*http://t-rix.net/te/exjs3.js
*url*http://t-rix.net/te/exjs4.js

***external_js_section***

そして先ほどと同じように公開→URLをメモして、フリープラグインに以下のように記述します。
url:の部分は先ほどメモしたURLに書き換えてください。
<script type="text/javascript">
$.ajax({
url: "http://ameblo.jp/~",
cache: true,
success: function(html){
var urlArray = html.split("***external_js_section***");
urlArray = urlArray[1].replace(/<br \/>/g,"").split("*url*");
var len = urlArray.length;
for(var i=1;i<len;i++){
$.getScript(urlArray[i]);
}
}
});
</script>


これで問題なく実行できます!

$Ameblo Hacks ~アメブロを10倍楽しむために努力するブログ~

ただ、非同期通信で読み込むので、実行タイミングが少し遅れます。
ページ読み込みと同時に実行する必要があるコードでの使用は避けたほうが良いかと思います。

使う機会は殆ど無いかもしれませんが・・・w