獲取同一個域的數據,可以通過XMLHTTP組件或IFRAME來實現,不存在跨域訪問的權限問題,因此比較簡單。
但如果要訪問不同域的數據時,由於浏覽器的安全設置,XMLHTTP沒有權限獲取數據,而IFRAME沒有權限將獲取的數據傳遞給父窗口,似乎沒有其它解決辦法。
頓悟……
網頁內引用不同域的腳本並不會提示權限不足,對了,就是它沒錯!
解決方法找到了,現在來簡單測試一下:
首先在51js.com服務器上新建一頁面(Test.html)。
[Ctrl+A 全選 注:如需引入外部Js需刷新才能執行]
解釋兩個關鍵點:
1. lastScript用於存放上次建立的script節點的ID,在下次要再新建script節點時,要刪除上次建立的節點,以免加載的腳本越來越多,占用過多的內存。
2. url後面加了一個數值d是為了防止浏覽器緩存腳本數據,在本例中可以不加,但是如果腳本是由服務器動態生成的,那最好加上。
然後再建立兩個java script腳本用於測試。
alert.js:
alert('You can see me!');
info.js:
g('myname').value='譜樂視聽';
g('myblog').value='www.aboutplayer.com';
好了,譜樂已把它們放在aboutplayer.com服務器下,這樣它們和Test.html就不在同一個域內了。
用浏覽器打開Test.html文件。
點擊“Test Alert”,應該會彈出對話框顯示You can see me!。
點擊“Get My Info”,應該會在文本框中顯示本站的信息。
進而,若把Lrc歌詞數據放入Js腳本文件中(不是直接更改文件擴展名),就可實現跨域獲取Lrc歌詞數據了。