1. ホーム
  2. javascript

[解決済み] Javascriptを使用してCSSファイルを読み込むには?

2022-03-15 14:56:23

質問

Javascriptを使用して、CSSスタイルシートをhtmlページに取り込むことは可能でしょうか?もし可能なら、どのようにすればいいのでしょうか?

P.S. javascript は私のサイトでホストされますが、ユーザーが <head> タグを使用すると、私のサーバーにホストされているCSSファイルを現在のウェブページにインポートすることができるはずです。(cssファイルとjavascriptファイルの両方が私のサーバーにホストされます)。

どのように解決するのですか?

ここでは、すべてのブラウザーで動作することを期待し、それを行うための古い学校"方法を示します。理論上、あなたは setAttribute 残念ながらIE6では一貫してサポートされていません。

var cssId = 'myCss';  // you could encode the css path itself to generate id..
if (!document.getElementById(cssId))
{
    var head  = document.getElementsByTagName('head')[0];
    var link  = document.createElement('link');
    link.id   = cssId;
    link.rel  = 'stylesheet';
    link.type = 'text/css';
    link.href = 'http://website.com/css/stylesheet.css';
    link.media = 'all';
    head.appendChild(link);
}

この例では、CSSがすでに追加されているかどうかをチェックし、一度だけ追加するようにしています。

このコードをjavascriptファイルに記述し、エンドユーザーがjavascriptをインクルードするだけで、CSSのパスが絶対で、サーバーから読み込まれることを確認します。

バニラJS

ここでは、プレーンなJavaScriptを使って、CSSリンクを head 要素のURLのファイル名部分に基づいています。

<script type="text/javascript">
var file = location.pathname.split( "/" ).pop();

var link = document.createElement( "link" );
link.href = file.substr( 0, file.lastIndexOf( "." ) ) + ".css";
link.type = "text/css";
link.rel = "stylesheet";
link.media = "screen,print";

document.getElementsByTagName( "head" )[0].appendChild( link );
</script>

を閉じる直前にコードを挿入します。 head タグを使用すると、ページがレンダリングされる前にCSSが読み込まれます。外部のJavaScript( .js ) ファイルを使用すると、スタイルのないコンテンツのFlash ( ファウク )が表示されます。