我不確定問題的標題是否正確,以及問題的有效性。jQuery獲取調用腳本標記的引用
下面是場景:
// HTML
<script src="/script.js" data-app="app.js" />
//的script.js
$(function() {
var script = // ???
});
裏面的js代碼,我想引用原始標籤,一誰初始化加載「/script.js」,所以我能夠檢查data-app
屬性。
這可能嗎?
我不確定問題的標題是否正確,以及問題的有效性。jQuery獲取調用腳本標記的引用
下面是場景:
// HTML
<script src="/script.js" data-app="app.js" />
//的script.js
$(function() {
var script = // ???
});
裏面的js代碼,我想引用原始標籤,一誰初始化加載「/script.js」,所以我能夠檢查data-app
屬性。
這可能嗎?
$('script').last().data('app');
注意,這可能不是在DOM準備塊。您可以訪問當前腳本標籤的唯一地方是它第一次執行的時間。異步回調(如DOM就緒事件)不符合此要求。你可以簡單地存儲在一個變量的值,雖然,然後用它從你的事件中:
(function() {
var app = $('script').last().data('app');
$(document).ready(function() {
// do stuff
});
})();
您可以枚舉document.scripts
中的腳本並使用其src
屬性識別您的腳本。
我不認爲有一個「正確」的方式,讓您的標籤。但理論上講,當你的腳本運行相應的標籤時,應該是插入到文檔中的最後一個。所以把這樣的代碼爲script.js
作品:
var child = document;
while (child && child.localName != "script")
child = child.lastChild;
if (child)
alert("My script tag: " + child);
您將需要運行該代碼時,腳本加載並記住腳本標籤,如果你在初始加載後需要它。
爲什麼不'getElementsByTagName('script')'? – ThiefMaster
@ThiefMaster:性能 - 如果可以直接訪問該文檔中最後一個元素,爲什麼要枚舉可能非常大的文檔中的所有腳本。 –
document.scripts[document.scripts.length-1].src
我不知道是什麼瀏覽器支持它(IE和Chrome,是)
我認爲所有的瀏覽器都支持'document.scripts',但它是一個向後兼容的屬性,在現代瀏覽器中它和document.getElementsByTagName(「script」)'完全一樣。 –
以及最後會遍歷DOM ..但是我想同樣的結果 –
就像'document.scripts'一樣。 –
的[我怎麼可能會引用加載當前正在執行腳本的腳本標籤?]可能重複(HTTP:/ /stackoverflow.com/questions/403967/how-may-i-reference-the-script-tag-that-loaded-the-currently-executing-script) – ThiefMaster
在chrome和IE上有一個document.scripts屬性(長時間),我不知道它的標準(我不這麼認爲)以及哪些瀏覽器支持它,但是如果它的調試目的和控制瀏覽器版本,那麼它可以使用它而不是波紋管建議$(「。 ..「)jquery stuff –