4

ユーザーがウィザードを使用して独自のCodeigniterWebサイトを生成できるWebサイトがあり、ユーザーはモジュール、フィールド、および関数の詳細を提供します。ユーザーの入力に基づいて、Webサイトが生成され、私のWebサイトに展開され、ダウンロードに進む前にデモがユーザーに表示されます。すべてが正常に動作します。

現在、ユーザーがプレビューするときに、生成されたWebサイトにさまざまなスタイル/テーマを選択できるようにすることを計画しています。ページ全体をリロードせずに、ユーザーが変更をすぐに確認できるようにするにはどうすればよいですか?

生成されたWebサイトのスタイルシートファイルを選択したスタイルに置き換えて、生成されたWebサイトの別のページにリダイレクトしてみました。ただし、ブラウザによってすでにキャッシュされているため、同じスタイルシートファイルが使用されます。だから私にいくつかのオプションを教えてください。ユーザーをリダイレクトせずにそれを実行できる場合は、それが私にとって最良のオプションになります。

4

4 に答える 4

4

キャッシュの問題を防ぐために、スタイルシートには異なる名前を付ける必要があります。jQueryを使用して実装する方法の例を次に示します。http ://www.cssnewbie.com/simple-jquery-stylesheet-switcher/

デモ

于 2012-07-17T12:55:17.167 に答える
1

ビューに変数を渡すと、変数はスタイルシートのファイル名の値を保持しますか?ユーザーが同じページにいるときにスタイルファイルを変更する限り...この質問を参照してください:ページをリロードせずにcssをリロードする簡単な方法はありますか?

<?php
$data['stylesheet_name'] = 'user1';

$this->load->view('viewname', $data);

/**
 * View File
 **/

<link rel="stylesheet" type="text/css" href="/css/user/<?= $stylesheet_name; ?>.css" />
于 2012-07-17T17:12:38.650 に答える
0

以下のコードを使用しましたが、スタイルシートのファイル名を変更しなくても機能します。

function reloadStylesheets() {
    var queryString = '?reload=' + new Date().getTime();
    $('link[rel="stylesheet"]').each(function () {
        this.href = this.href.replace(/\?.*|$/, queryString);
    });
}

これにより、時間の変更によりパラメータが変更されたため、ブラウザはファイルをリロードします。

于 2012-07-18T05:36:55.503 に答える
0

これは、単一のスタイルシートを置き換えるのに役立ちました。スタイルシートには、「themegray」、「themeblue」、「themegreen」などの名前が付けられています。「t」は、「blue」などの新しい色を表します。

function flipTheme(t) {
    $('link[rel="stylesheet"]').each(function () {
        if (this.href.indexOf(theme)>=0) {
            this.href = this.href.replace(theme, t);
            theme = t;
        }
    });
}
于 2015-11-09T22:07:31.060 に答える