(失敗的) 網頁混搭筆記


(請檢視本頁原始碼的 javascript。) 本來想要用 javascript 去搜括三個網頁: 1, 2, 3, 再進一步整理, 混搭列出三人的論文列表。 結果依序遇到下列問題:

  1. 基於安全理由, jQuery.get() 禁止讀取他站的網頁。
  2. 參考 The jQuery Cross-Domain Ajax Guide 裡面提到 James Padolsey 用 YQL 製作了 cross-domain-ajax。
  3. 採用了上述 script 之後, 果然可以用 $.get(...) 讀取他站的網頁。 試著把讀來的資料逐頁加到變數 msg 裡面。
  4. 但是三個頁面的資料不同步抵達; 而且這些資料都還沒搜集完, 程式就要開始處理 msg 了。 (就因為 get 底下其實是呼叫 ajax 咩: 一觸發讀檔的動作, 就立刻頭也不回地走人了) 結果印出來的 msg 是空的。
  5. 如果改成直接呼叫 $.ajax(...), 試圖取消 async 設定, 讓每個讀檔動作循序排隊完成, 卻又會被瀏覽器以安全理由攔住。 Firefox 3.5.6 和 chrome 皆然。 (也就是說, cross-domain-ajax 不知為何失效)
  6. (找 semaphore 之類的解決方案, 沒結果)
  7. 所以試著尋找 sleep 之類的函數, 企圖自己手工製作 semaphore, 慢慢等三個頁面的資料抵達。
  8. 可是 javascript 沒有 sleep() 函數, 也沒有簡單的實作
  9. 那就改用 setTimeout 吧... 還是失敗 orz

嗯, 只好放棄 javascript。 以後有空改用 php 來做做看吧。

觀察程式碼效果 (paper_aggregation)