PDA

View Full Version : اضافه کردن CSS به صورت دینامیک



PrinceDotNet
سه شنبه 22 خرداد 1386, 01:14 صبح
سلام
می خواستم بدونم چطور میشه به صورت داینامیک یک فایل CSS رو به صفحه اضافه کرد.
ممنون

saeid taheri
سه شنبه 22 خرداد 1386, 01:25 صبح
var expDays = 9999;
var standardStyle = '1';
var nameOfCookie = 'switchstyle';
var urlToCSSDirectory = '';

var ScreenCSS_1 = 'CSS1.css';
var ScreenCSS_2 = 'CSS2.css';
var ScreenCSS_3 = 'CSS3.css';
var ScreenCSS_4 = 'CSS4.css';
var ScreenCSS_5 = 'CSS5.css';

function switchStyleOfUser(){
var styleType = GetCookie(nameOfCookie);
if (styleType == null) {
styleType = standardStyle;
}

if (styleType == "1") { document.write('<link rel="stylesheet" type"text/css" href="css/' + urlToCSSDirectory + ScreenCSS_1 + '" media="screen">'); }
if (styleType == "2") { document.write('<link rel="stylesheet" type"text/css" href="css/' + urlToCSSDirectory + ScreenCSS_2 + '" media="screen">'); }
if (styleType == "3") { document.write('<link rel="stylesheet" type"text/css" href="css/' + urlToCSSDirectory + ScreenCSS_3 + '" media="screen">'); }
if (styleType == "4") { document.write('<link rel="stylesheet" type"text/css" href="css/' + urlToCSSDirectory + ScreenCSS_4 + '" media="screen">'); }
if (styleType == "5") { document.write('<link rel="stylesheet" type"text/css" href="css/' + urlToCSSDirectory + ScreenCSS_5 + '" media="screen">'); }

var styleType = "";
return styleType;
}

var exp = new Date();
exp.setTime(exp.getTime() + (expDays*24*60*60*1000));

function getCookieVal (offset) {
var endstr = document.cookie.indexOf (";", offset);
if (endstr == -1)
endstr = document.cookie.length;
return unescape(document.cookie.substring(offset, endstr));
}

function GetCookie (name) {
var arg = name + "=";
var alen = arg.length;
var clen = document.cookie.length;
var i = 0;
while (i < clen) {
var j = i + alen;
if (document.cookie.substring(i, j) == arg)
return getCookieVal (j);
i = document.cookie.indexOf(" ", i) + 1;
if (i == 0) break;
}
return null;
}

function SetCookie (name, value) {
var argv = SetCookie.arguments;
var argc = SetCookie.arguments.length;
var expires = (argc > 2) ? argv[2] : null;
var path = "/";//(argc > 3) ? argv[3] : null;
var secure = (argc > 5) ? argv[5] : false;
document.cookie = name + "=" + escape (value) +
((expires == null) ? "" : ("; expires=" + expires.toGMTString())) +
((path == null) ? "" : ("; path=" + path)) +
((secure == true) ? "; secure" : "");
}

function DeleteCookie (name) {
var exp = new Date();
exp.setTime (exp.getTime() - 1);
var cval = GetCookie (name);
document.cookie = name + "=" + cval + "; expires=" + exp.toGMTString();
}

function doRefresh(){
location.reload();
}

document.write(switchStyleOfUser());

PrinceDotNet
سه شنبه 22 خرداد 1386, 09:18 صبح
یعنی نمیشه سمت سرور این کار رو کرد !!!

Behrouz_Rad
سه شنبه 22 خرداد 1386, 09:23 صبح
تگ link رو runat در server کن و یک ID بهش نسبت بده تا بتونی در سمت سرور بهش دسترسی داشته باشی.

موفق باشید.

m.hamidreza
چهارشنبه 23 خرداد 1386, 18:58 عصر
تگ link رو runat در server کن و یک ID بهش نسبت بده تا بتونی در سمت سرور بهش دسترسی داشته باشی.

موفق باشید.
اگه بخوایم این فایل css بعداز تغییر در page های بعدی هم اعمال شه ، باید وضعیت رو با session مدیریت کنیم یا راه دیگه ای هم هست ؟

Behrouz_Rad
چهارشنبه 23 خرداد 1386, 19:02 عصر
منظورت رو متوجه نشدم!

babi_wd
چهارشنبه 23 خرداد 1386, 22:24 عصر
بهتره فایل CSS رو دوباره نویسی کنی،و تو صفحات دیگه فقط لینک یه فایل وجود داشته باشه

PrinceDotNet
پنج شنبه 24 خرداد 1386, 09:44 صبح
من خودم از روش زیر هم استفاده کردم و درست هم اجرا شد :



Dim link As New HtmlLink
link.Attributes.Add("rel", "stylesheet")
link.Attributes.Add("type", "text/css")
link.Href = "Style/forum.css"
Me.Page.Header.Controls.Add(link)

Behrouz_Rad
پنج شنبه 24 خرداد 1386, 10:02 صبح
روش فوق صحیح هست و در ASP.NET 2.0 استفاده میشه.
در ASP.NET 2.0 امکان دسترسی به Header و همچنین تگ های META ی صفحه رو به طور مستقیم از طریق کدنویسی دارید.

موفق باشید.

m.hamidreza
پنج شنبه 24 خرداد 1386, 10:04 صبح
منظورت رو متوجه نشدم!

سایت MSN یه Change Theme داره که CSS تغییر میکنه ،حالا همین style رو که کاربر انتخاب کرده در صفحه های بعدی هم ببینه.
که البته با این روش که به Meta اضافه می کنیم قابل انجام هست + ُُSessionکه آخرین تغییر رو حفظ کنه ،درسته؟

najafzade
پنج شنبه 24 خرداد 1386, 10:12 صبح
فکر کنم با این کد مشکلتون حل بشه:


<!--webbot bot="Include" U-Include="http://www.domain.com/file.css" TAG="BODY" -->

امیدوارم مشکلتون حل بشه.:گریه:

ealireza
پنج شنبه 24 خرداد 1386, 10:21 صبح
خیلی جا ها دیدم این کار انجام میشه ولی چون JavaScript هست
میتونی از Cookie استفاده کنی
موفق باشید

Behrouz_Rad
پنج شنبه 24 خرداد 1386, 11:07 صبح
سایت MSN یه Change Theme داره که CSS تغییر میکنه ،حالا همین style رو که کاربر انتخاب کرده در صفحه های بعدی هم ببینه.
که البته با این روش که به Meta اضافه می کنیم قابل انجام هست + ُُSessionکه آخرین تغییر رو حفظ کنه ،درسته؟
Session نه! کوکی!

ealireza
پنج شنبه 24 خرداد 1386, 11:58 صبح
در صورتی که از Cookie استفاده بشه این تغییرات برای همیشه یا تا زمان پاک شدن کوکی حفظ میشه !
در ضمن لازم هم نیست Server Side باشه .... با نوشتن یک اسکریپت جاوا اسکریپت این کار به راحتی انجام میشه
این مقاله فکر کنم جالب باشه براتون
http://liorean.web-graphics.com/scripts/themeswitch.html
موفق باشد