1

舉個例子,我有以下的HTML:可能獲得<script> src JavaScript URL的查詢參數?

<body> 
    <script src="code.js?q=xyz"></script> 
</body> 

我希望能夠從code.js內讀取q=xyz查詢參數。我想:

console.log(window.location.href) 

但它給我的HTML文檔的URL,而不是code.js的URL(然後我可以解析查詢參數的URL)。

有沒有什麼辦法從該JavaScript中獲取導入的JavaScript文件的查詢參數?我知道我可以讀取服務器上的查詢參數,然後發回嵌入了查詢參數的JavaScript,但我不想那樣做。我希望能夠將JavaScript文件放在可通過查詢參數配置的CDN上。

+1

你想要'document.currentScript' –

+0

在你這樣做之前,你應該看看這個:https://stackoverflow.com/questions/2190801/passing-parameters-to-javascript-files –

回答

1

您可以使用document.currentScript.src訪問<script>src-屬性,然後提取查詢參數。對於較老的瀏覽器(如IE 11)訪問src -attribute:

var scripts = document.getElementsByTagName('script'); 
var src = scripts[scripts.length - 1].src; 

這將返回src -attribute上次執行的腳本。 在某些情況下,上次執行的腳本不是當前腳本(例如,如果腳本操縱其他<script>元素),因此它有點不可靠。

+0

正是我希望存在的!謝謝。不幸的是,IE 11不支持'document.currentScript':http://caniuse.com/#search=currentScript 我通常不會在意IE 11,但在這種特殊情況下,我必須在意...只有polyfill我發現在IE 6-10的作品,並明確表示無法在IE 11上工作:(https://github.com/JamesMGreene/document.currentScript IE 11的任何解決方法? –

+0

有一個解決方法。將它添加到答案中,我認爲這個問題已經在其他地方回答了,然後 - 我找不到問題。 – fzzle

+0

我可以搜索所有'