Потенциальные проблемы, устанавливающие window.location.hash

В случае 1, если вы использовали метод DoIt () унаследованного класса, в то время как тип объявлен как базовый класс, вы увидите действие базового класса.

/* Results
Class1
Base1
Class2
Class2
*/
public abstract class Base1
{
    public void DoIt() { Console.WriteLine("Base1"); }
}
public  class Class1 : Base1 
{
    public new void DoIt() { Console.WriteLine("Class1"); }
}
public abstract class Base2
{
    public virtual void DoIt() { Console.WriteLine("Base2"); }
}
public class Class2 : Base2
{
    public override void DoIt() { Console.WriteLine("Class2"); }
}
static void Main(string[] args)
{
    var c1 = new Class1();
    c1.DoIt();
    ((Base1)c1).DoIt();

    var c2 = new Class2();
    c2.DoIt();
    ((Base2)c2).DoIt();
    Console.Read();
}
23
задан Cameron 11 August 2009 в 23:22
поделиться

5 ответов

window.location.hash существует с тех пор, как JavaScript появился в Netscape Navigator 2 в 1995 году. Впервые он был поддержан Microsoft в Internet Explorer 3 в 1996 году. Я думаю, вы можете быть достаточно уверены, что каждый браузер с поддержкой JS поддерживает его.

При быстром взгляде на источник, создается впечатление, что ReallySimpleHistory довольно широко использует это свойство, так что вы вполне можете его сломать. Возможно, вы захотите использовать вместо этого его метод add(newLocation) (который работает путем установки window.location.hash).

25
ответ дан NickFitz 29 November 2019 в 01:18
поделиться

Старая нить, я знаю, но window.location.hash также ограничена по размеру. Если вы передаете большие объемы данных и хотите сохранить состояние в хэше, у вас могут возникнуть некоторые проблемы.

IE выдаст вам ошибку: SCRIPT5 - Access denied., если вы попытаетесь назначить хеш, превышающий лимит, что очень полезно.

Просто пища для размышлений.

10
ответ дан ginman 29 November 2019 в 01:18
поделиться

Настройка window.location.hash отлично работает в IE6 & amp; IE7.

В некоторых случаях чтение window.location.hash под IE6 сразу после набора вернет старое значение, но браузер успешно установил хэш. Пример:

alert(window.location.hash);
window.location.hash = '#newHash';

/* Sometimes, it will return the old value,
   I haven't figured out why it does that, and
   it's rather rare. */
alert(window.location.hash);

Если вы просто используете его для установки, вы не должны сталкиваться с какими-либо проблемами.

3
ответ дан Andrew Moore 29 November 2019 в 01:18
поделиться

Получить:

 var hash = location.hash.slice(1);

Установить:

 location.hash = '#' + 'string';
15
ответ дан 29 November 2019 в 01:18
поделиться

Все «современные» (также известные как A-Graded) браузеры позволяют устанавливать хэш и при этом не перезагружают страницу. Те, которые перезагружают страницу , являются одними из старых, например Safari 2.0.4 и Opera 8.5x .

См. мой пост в Usenet на comp.lang.javascript , где я объясняю его немного более подробно.

Также обратите внимание, что HTML5 наконец указывает, что установщик хеша должен изменять фактический хеш, но не перезагружает страницу .

4
ответ дан 29 November 2019 в 01:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: