Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разработка под ASP.NET > Отключен JS в браузере!


Автор: Wizard_Memfis 8.8.2007, 17:11
Столкнулся с проблемкой!
Если у человека не работает JS в браузере,код естестно не работает!
Код

writer.WriteLine("<li><a id=\"" + id +
                            "\" href=\"default.aspx?MainChart$TimeHorizonTab$ullTimeHorizons=" +
                            value + "\"><span>" + text + "</span></a></li>");

Хотел сделать так,да что-то глючит!!!
Код

object o = (object)this.FindControl(idToUse);
System.Web.UI.HtmlControls.HtmlInputControl ctrl = (System.Web.UI.HtmlControls.HtmlInputControl)findCtrl;
ctrl.Value = value;

Надо дать возможность алтернативы!Только вот как это сделать??? smile 
Мож кто знает???

Автор: Mymik 8.8.2007, 19:09
А о каком JS ты вообще говоришь ??? я пока что его не увидел нигде... 

Автор: Wizard_Memfis 9.8.2007, 09:25
Sorry!Не тот код, копировал быстро не тот if взял!!! smile 
Вот от этого куска мне надо избавится!!!
Код

HtmlTextWriter writer.WriteLine("<li><a id=\"" + id +
"\" href=\"#\" onClick=\"document.getElementById('" + idToUse +"').value = '" + value + "';
document.forms[0].submit()\">
<span>" + text + "</span></a></li>"); 

Еще раз сорри!

Автор: Mymik 9.8.2007, 10:42
даже не знаю... могу посоветовать написать вместо ссылоку Button... но, ИМХО, лучше просто проверять, если JS нет, то говорить, мол так и так, простите, но вы должны включить JS для корректной работы нашего сайта

Автор: Wizard_Memfis 9.8.2007, 10:54
Да в том то и дело,что так было!Но так не устраивает!
А нельзя это как-то средствами C# обойти?
Типа найти этот контрол по айди?Что-то типа того что я писал!Вот только как сделать обновление страницы?

Добавлено через 2 минуты и 27 секунд
Вот как-то так я хочу сделать!
Код

object o = (object)this.FindControl(idToUse);
System.Web.UI.HtmlControls.HtmlInputControl ctrl = (System.Web.UI.HtmlControls.HtmlInputControl)findCtrl;
ctrl.Value = value;

HtmlTextWriter writer.WriteLine("<li><a id=\"" + id +
"\" href=\"#\" onClick=\ctrl';
document.forms[0].submit()\">
<span>" + text + "</span></a></li>"); 


Только как submit() сделать?

Автор: Wizard_Memfis 9.8.2007, 18:04
Цитата

Mymik 
даже не знаю... могу посоветовать написать вместо ссылоку Button

Можешь поподробней рассказать!А-то че-то не долшло!
Для пользы дела привожу код, который нужно изменить:
Код

protected override void Render(HtmlTextWriter writer)
        {
            
            bool use_javascript_links = true;
            //if (null != ((IRPage)Page).IRAppMgr.Config.GetAttributeByKey("use_javascript_links").Value)
            //    use_javascript_links = bool.Parse(((IRPage)Page).IRAppMgr.Config.GetAttributeByKey("use_javascript_links").Value);
            // TODO: Check whether UniqueID should be used instead of the ClientID here
            string idToUse = Parent.UniqueID + "$" + ID;
            if (!(Page is IRPage))
            {
                // Designer stage or the page does not inherit IRPage
                base.Render(writer);
                return;
            }
            IRAppManager manager = ((IRPage)Page).IRAppMgr;

            writer.AddAttribute(HtmlTextWriterAttribute.Name, idToUse);
            writer.AddAttribute(HtmlTextWriterAttribute.Id, idToUse);
            if (checkTime(this.Config.Value))
            {
                //writer.AddAttribute(HtmlTextWriterAttribute.Value, this.Config.Value);
            }
            writer.AddAttribute(HtmlTextWriterAttribute.Type, "hidden");
            writer.RenderBeginTag(HtmlTextWriterTag.Input);
            writer.RenderEndTag();

            Option o = manager.Config.GetSingleSelectedOption("timeHorizons");
            writer.Write("<input name=\"lastSelected\" id=\"lastSelected\" value=\"{0}\" type=\"hidden\" />", (null == o ? "" : o.Key));

            if (!string.IsNullOrEmpty(this.CssClass))
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Class, this.CssClass);
            }
            foreach (string attr in this.Attributes.Keys)
            {
                writer.AddAttribute(attr.ToLower(), this.Attributes[attr]);
            }
            writer.RenderBeginTag(HtmlTextWriterTag.Div);
            writer.Indent++;
            writer.RenderBeginTag(HtmlTextWriterTag.Ul);
            // dont change
            XmlNodeList listItems = ((IRPage)Page).IRAppMgr.Data[_ListDataSource].SelectNodes(_ListXPath, ((IRPage)Page).IRAppMgr.Data[_ListDataSource].NsManager);
            writer.Indent++;
            foreach (XmlElement listItem in listItems)
            {
                string value = ControlHelpers.GetElemAttr(listItem, _ListValueElement);
                string text = ControlHelpers.GetElemAttr(listItem, _ListTextElement);
                if (_ListTranslatePrefix != null)
                {
                    text = ((IRPage)Page).IRAppMgr.Translate(_ListTranslatePrefix + text);
                }
                string id = this.ID + "_" + value;
                // TODO: was config bound.
                //if (value == this.Config.Value && (checkTime(value) || value == "all"))
                if (o != null && value == o.Key)
                {
                    writer.WriteLine("<li class=\"Selected\"><a id=\"" + id + "\" href=\"#\"><span>" + text + "</span></a></li>");
                }
                else
                {                   
                    if (!use_javascript_links)
                    {
                        ВОТ ТУТ СОБСТВЕННО И НУЖЕН 2 ВАРИАНТ!!!                  
                        //writer.WriteLine("<li><a id=\"" + id +
                        //    "\" href=\"default.aspx?MainChart$TimeHorizonTab$ullTimeHorizons=" +
                        //    value + "\"><span>" + text + "</span></a></li>");
                    }
                    else
                    {                        
                        writer.WriteLine("<li><a id=\"" + id +
                            "\" href=\"#\" onClick=\"document.getElementById('" + idToUse +
                            "').value = '" + value + "';document.forms[0].submit()\"><span>" +
                            text + "</span></a></li>"); 
                    }
                }
            }
            if (_AddEndLiItem)
            {
                writer.WriteLine("<li class=\"last\"><div><span>&nbsp;</span></div></li>");
            }
            writer.Indent--;
            writer.RenderEndTag();
            writer.Indent--;
            writer.RenderEndTag();

        }

Автор: Mymik 9.8.2007, 19:46
Wizard_Memfis, А если ты все равно делаешь submit данных, то нафиг тебе тогда вобще JS ???

Ну вобщем так. Создаешь кнопку Button та что asp.net'овская и говоришь, ей в свойство OnClientClick поставить тот твой код.
Button asp.net'овский делает submit формы. Потому на стороне сервера ты можешь перехватывать клики на этот клик. И смотришь, если у пользователя включен JS то делаешь return;  если же не включен то заплоняешь это руками.

Проверить включен ли у пользователя JS можно с помощью
asp.net 2.0
Код

System.Web.HttpBrowserCapabilities myBrowserCaps = Request.Browser;
if (((System.Web.Configuration.HttpCapabilitiesBase)myBrowserCaps).JavaScript)
{
    /* Браузер поддерживает JS */
}
else
{
    /* Браузер не поддерживает JS */
}

asp.net 1.1
Код

if(Request.Browser.JavaScript)
{
    /* Браузер поддерживает JS */
}
else
{
    /* Браузер не поддерживает JS */
}

Автор: Wizard_Memfis 10.8.2007, 09:15
БОЛЬШОЕ СПС, Mymik!!!
Сейчас будем делать!!! smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)