ありますか $.getScript
jQueryでは同等ですが、スタイルシートをロードするためですか?
CSSはスクリプトではないため、スクリプトの実行という意味で「実行」する必要はありません。
基本的に、オンザフライで作成されてヘッダーに追加された<link>
タグで十分です。
$('<link/>', {
rel: 'stylesheet',
type: 'text/css',
href: 'path_to_the.css'
}).appendTo('head');
または
var linkElem = document.createElement('link');
document.getElementsByTagName('head')[0].appendChild(linkElem);
linkElem.rel = 'stylesheet';
linkElem.type = 'text/css';
linkElem.href = 'path_to_the.css';
jQueryなしで実行したい場合。
ブラウザはDOMの変更に応答し、それに応じてページレイアウトを更新します。
[〜#〜]編集[〜#〜]:
私は古いInternet Explorerがこれで問題を抱えていることを読みました。
https://stackoverflow.com/a/2685639/618206
EDIT2:
ファイルのコンテンツを読み取ってインラインで(<style>
タグの間に)配置することも有効なソリューションですが、その方法ではCSSはブラウザーによってキャッシュされません。
スタイルシートを処理する$.getScript
の代替を作成しました。明白な理由で、私はそれを $。getStylesheet と呼びました。
$.Deferred
オブジェクトを実装しています。つまり、次のようにチェーンできます。
$.when($.getStylesheet('css/main.css'), $.getScript('js/main.js'))
.then(function () {
console.log('the css and js loaded successfully and are both ready');
}, function () {
console.log('an error occurred somewhere');
});
$。getStylesheet の小さな関数を次に示します。 Github Gistでホストされているだけなので、必要に応じて更新できます。
$ .getScriptは実際には単なる別のHTTPリクエストなので、同じメソッド$ .getScriptを使用してスタイルシートを「ダウンロード」できます。しかし、cssは実行可能ではないため、少し配線されます。
以下は、成功または失敗のコールバックでCSSファイルをロードする関数です。 HREFを使用して要素をDOMに挿入すると追加のブラウザー要求が発生するため(この場合、要求は応答ヘッダーによってはキャッシュから送信される可能性があります)、この方法は受け入れられた回答よりも優れていると思います。
function loadCssFiles(urls, successCallback, failureCallback) {
$.when.apply($,
$.map(urls, function(url) {
return $.get(url, function(css) {
$("<style>" + css + "</style>").appendTo("head");
});
})
).then(function() {
if (typeof successCallback === 'function') successCallback();
}).fail(function() {
if (typeof failureCallback === 'function') failureCallback();
});
}
そのように使用:
loadCssFiles(["https://test.com/style1.css", "https://test.com/style2.css",],
function() {
alert("All resources loaded");
}, function() {
alert("One or more resources failed to load");
});
次に、両方のCSS and javascriptファイルをロードする別の関数を示します。
function loadJavascriptAndCssFiles(urls, successCallback, failureCallback) {
$.when.apply($,
$.map(urls, function(url) {
if(url.endsWith(".css")) {
return $.get(url, function(css) {
$("<style>" + css + "</style>").appendTo("head");
});
} else {
return $.getScript(url);
}
})
).then(function() {
if (typeof successCallback === 'function') successCallback();
}).fail(function() {
if (typeof failureCallback === 'function') failureCallback();
});
}