Javascript を使用して CSS ファイルを読み込むにはどうすればいいですか? 質問する

Javascript を使用して CSS ファイルを読み込むにはどうすればいいですか? 質問する

Javascript を使用して CSS スタイルシートを HTML ページにインポートすることは可能ですか? 可能であれば、どのようにすればよいですか?

PS: JavaScript は私のサイトでホストされますが、ユーザーが自分の Web サイトのタグを挿入できるようにし<head>、私のサーバーでホストされている CSS ファイルを現在の Web ページにインポートできるようにする必要があります。(CSS ファイルと JavaScript ファイルは両方とも私のサーバーでホストされます)。

ベストアンサー1

これは「昔ながらの」やり方で、すべてのブラウザで動作するはずです。理論的には、setAttributeIE6 ではこれを一貫してサポートしていないため、使用することはできません。

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.example/css/stylesheet.css';
    link.media = 'all';
    head.appendChild(link);
}

この例では、CSS がすでに追加されているかどうかを確認し、CSS を 1 回だけ追加します。

そのコードを JavaScript ファイルに配置し、エンド ユーザーに JavaScript を組み込むように指示し、CSS パスが絶対パスであることを確認してサーバーから読み込まれるようにします。

バニラJS

head以下は、プレーンな JavaScript を使用して、URL のファイル名部分に基づいて要素に CSS リンクを挿入する例です。

<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) ファイルを使用すると、スタイル設定されていないコンテンツのフラッシュ (フーク) 現れる。

おすすめ記事