,但又不會聰明跳過 pre, code 不處理,造成在網頁上放 javascript 程式時的麻煩。
==== 抱怨分隔線 ====
一般來說,在 blog 使用 JavaScript 通常都是放到側邊裡,做來顯示一些小工具等等,在 blogger.com 中就是要改 template,雖然 template 難看,倒也沒為難使用者,想用的都可以正常使用。但如果是在 blog 內文中要放 JavaScript 時就會遇到上面說的 <br /> 問題 (還好並不會過濾掉 <script> )。例如你在內文中寫
<script type="text/javascript">
google.load("maps", "2");
google.setOnLoadCallback(function(){
var map = new google.maps.Map2(document.getElementById("map"));
map.setCenter(new google.maps.LatLng(23.63446,120.970459), 7);
});
</script>
後來輸出的文章就會變成 <script type="text/javascript"><br />google.load("maps", "2");<br />google.setOnLoadCallback(function(){<br /> var map = new google.maps.Map2(document.getElementById("map"));<br /> map.setCenter(new google.maps.LatLng(23.63446,120.970459), 7);<br />});<br /></script>
想當然就不會正常執行。這個問題避開的方法最好的就是關掉把換行轉為 <br /> 的設定,不過因為這個設定是 global 的,會影響到所有的文章,所以除非一開始就這樣設定,不然後來再改等於要修改之前所有的文章。不然就是要把程式寫成一行,這樣就不會被 <br /> 影響了,要達到這個做法第一個就是自己動手改,另一個方式就是在程式頭尾都加上註解,如下 <script type="text/javascript">/*
*/google.load("maps", "2");/*
*/google.setOnLoadCallback(function(){/*
*/ var map = new google.maps.Map2(document.getElementById("map"));/*
*/ map.setCenter(new google.maps.LatLng(23.63446,120.970459), 7);/*
*/});/*
*/</script>
這樣最後的輸出就會正好把 <br /> 註解掉,很蠢但會動 (前提是你的 Script 可以被寫成一行) :)再來就是和 google maps api 有關。如果你在文章中用 maps api 時使用下面的方法載入程式
<script type="text/javascript" src="http://maps.google.com/maps?file=api&v=2.x&key=ABCD">如果當你兩篇文章都使用到 maps api 並同時出現的話,上面的主程式就會被載入兩次,雖然使用上不會有問題,但卻是無意義的浪費頻寬 (maps api 蠻大的)。這個問題的解法一是把上面那段放到 template 中,而在本文中不再載入,但這樣做當你的 blog 中沒有用到 maps api 時,也會強制載入。第二個方法就是用 ajaxlib 來載入 maps api,也是官方使用範例:
<script type="text/javascript" src="http://www.google.com/jsapi?key=ABCD"/>
google.load("maps", "2");
google.setOnLoadCallback(function(){
var map = new google.maps.Map2(document.getElementById("map"));
map.setCenter(new google.maps.LatLng(23.63446,120.970459), 7);
});
使用時一樣是把載入 http://www.google.com/jsapi?key=ABCD 這段放到 template 中,不過還好這玩意兒很小,而在每一篇要用到 maps api 的地方都使用 google.load 和 google.setOnLoadCallback 。雖然看起來好像變麻煩了,但這樣的好處是當多個地方都這樣用時,maps api 主程式的部分不會重複載入,而且現在 ajaxlib 已經整合好幾個主流 JavaScript Library 了(例如 jQuery...),快速方便又有良好架構。
0 comments:
Post a Comment