2015-12-12 32 views
-1

在JSP文件中,我有以下行:我可以在網頁上嵌套JavaScript腳本嗎?

<script type="text/javascript" src="//maps.googleapis.com/maps/api/js?sensor=false"></script> 

有沒有辦法只能這樣做行,如果一個JS變量(XY.isChina)是假的?

也許,我可以做這樣的事情嗎?

<script> 
    if (XY.isChina === false) { 
    <script type="text/javascript" src="//maps.googleapis.com/maps/api/js?sensor=false"></script> 
    } 
</script> 

我想也許我可以做這樣的事情:

<script> 
    type="text/javascript" 
    src="//maps.googleapis.com/maps/api/js?sensor=false" 
</script> 

,但似乎不起作用。因爲那時我本可以去:

<script> 
    if (XY.isChina === false) { 
    type="text/javascript" 
    src="//maps.googleapis.com/maps/api/js?sensor=false" 
    } 
</script> 

有沒有人知道正確的方法來做到這一點?

+0

check document.createElement – caub

+0

@Gothdo在你把這些連接起來的時候,你可以寫一個有用的答案,就像下面的社區成員那樣。我無法找到解決這種特殊情況的任何事情,所以我提出了這個問題。 – iMatthewCM

回答

1

有幾種選擇。您可以將document.write()的腳本放入HTML中,也可以動態加載腳本。這裏有一個例子:

<script> 
    if (XY.isChina === false) { 
     document.write('<scr' + 'ipt type="text/javascript" src="//maps.googleapis.com/maps/api/js?sensor=false"></scr' + 'ipt>'); 

    } 
</script> 

您可以動態地在任何時候像這樣加載腳本:

function loadScript(url, callback) { 
    var script = document.createElement("script"); 
    if (callback) { 
     script.onload = callback; 
    } 
    script.src = url; 
    document.getElementsByTagName("head")[0].appendChild(script); 
} 

動態加載像這將導致異步加載腳本(網頁加載等腳本不會等待此腳本加載),因此它將在未來的某個不確定時間完成。如果你想阻止

<script> 
    if (XY.isChina === false) { 
     loadScript("//maps.googleapis.com/maps/api/js?sensor=false"); 
    } 
</script> 

使用document.write()防止某些頁面加載優化的現代瀏覽器,因此它通常是最好找如果可能的話用不同的方式,但是:

你可以在你的代碼像這樣使用,使用document.write()腳本的同步加載是條件加載腳本的最簡單方法。

+0

這很好,非常感謝。有沒有什麼理由在這裏分開「腳本」一詞?它是否用「腳本」這個詞做了些什麼? – iMatthewCM

+1

@Joodoo - 你可以閱讀[這裏](http://stackoverflow.com/questions/236073/why-split-the-script-tag-when-writing-it-with-document-write)關於爲什麼它分裂。在技​​術上,我認爲只有''必須分解。 – jfriend00

+0

謝謝!總是喜歡學習新東西。在加載時間方面很少有怪癖,但我認爲這種方法是贏家。 – iMatthewCM

相關問題