2012-07-15 41 views
4

所以,當我想要把網頁上的一個谷歌+1按鈕,我這樣做:如何閱讀<script>標籤內的json內容?

<script type="text/javascript" src="https://apis.google.com/js/plusone.js"> 
    {lang: 'zh-TW'} 
</script> 

但我想知道,有腳本標籤的對象,但它也裝載plusone.js!最後,腳本還可以獲取標籤內的對象。 Google如何做到這一點?通常情況下,我不會在裏面放任何東西。通常情況下,我會做

<script type"text/javascript" src="script.js"></script> 
+3

他們將最後插入的腳本標記的字符串內容解析爲json。 – Yoshi 2012-07-15 18:54:58

+5

由於太本地化而關閉?爲什麼? – 2012-07-15 18:58:40

+1

@Derek:我相信這是你發佈的語氣。你應該改寫它來明確你想要做什麼以及你嘗試過什麼,而不是問「Google」如何做,但你可以做到。 「Google如何做到這一點?」是一個可怕的問題標題。 – 2012-07-15 19:00:55

回答

7

由於URL是已知的,它很簡單:

JSON.parse(
    document.querySelector("script[src='https://apis.google.com/js/plusone.js']") 
     .innerHTML.replace(/^\s+|\s+$/g,'') 
); 

這就是說,作爲Alohci在評論中指出,頁面上的最後一個腳本會最後一個腳本運行時加載,因爲(除非另有指定)腳本被阻塞。因此,這將工作:

var scripts = document.getElementsByTagName('script'); 
var data = JSON.parse(scripts[scripts.length-1].innerHTML.replace(/^\s+|\s+$/g,'')); 
+0

我認爲這也適用:'src =「// apis.google.com/js/plusone.js」' – 2012-07-15 19:06:21

+1

由於腳本在解析後立即運行,我相信一種常見的做法就是獲取最後一個腳本元素,而不是依賴匹配src屬性。 – Alohci 2012-07-15 19:08:25

+0

@Alohci好點,我忘了這一點。將編輯答案。 – 2012-07-15 19:13:02