Если вы хотите получить все ключи, ECMAScript 5 представил Object.keys
. Это поддерживается только более новыми браузерами, но MDC-документация предоставляет альтернативную реализацию (которая также использует for...in
btw):
if(!Object.keys) Object.keys = function(o){
if (o !== Object(o))
throw new TypeError('Object.keys called on non-object');
var ret=[],p;
for(p in o) if(Object.prototype.hasOwnProperty.call(o,p)) ret.push(p);
return ret;
}
Конечно, если вы хотите оба, ключ и значение, тогда for...in
является единственным разумным решением.
Ну, накладные расходы накладные, но да, не слишком большие.
Кроме того, браузеры иногда «жадны» в отношении кэшированных файлов. Вы можете очистить кеш и / или перезапустить браузер, и вы увидите изменения. Если это не удается ...
Мое дешевое решение:
Если эта последовательность не работает, значит, происходит что-то еще.
Скорее всего, проблема в веб-браузере. Вам нужно будет удалить кеш в браузере, закрыть браузер и снова открыть его. Это должно исправить.
Я не верю, что ваши избранные значки будут обновлены в избранном до тех пор, пока вы не посетите эту страницу повторно и не очистите кеш браузера.
Ваш веб-браузер не будет выходить в Интернет, чтобы самостоятельно проверять наличие нового значка ... слава богу.
В зависимости от браузера они обрабатываются по-разному, но обычно я обнаруживаю, что это происходит при переходе на страницу сайта по умолчанию и выполнении жесткого обновления. CTRL + F5 , как правило, заставляет его обновить.
Переименуйте файл значка и добавьте заголовок html с новым именем, например:
<link rel="SHORTCUT ICON" href="http://www.yoursite.com/favicon2.ico" />
Когда вы запрашиваете значок у Google, вы можете взглянуть на заголовки ответа .
Last-Modified: Fri, 09 Jan 2009 16:35:02 GMT
Date: Thu, 01 Dec 2010 00:00:01 GMT
Expires: Fri, 01 Dec 2011 00:00:01 GMT
Cache-Control: public, max-age=31536000
Age: 7
Если вы поместите в ответ заголовок «Истекает:», клиентские браузеры повторно запросят значок после этой отметки времени. При активной разработке вы можете установить метку времени истечения на одну или две секунды в будущем и всегда получать ее, хотя это плохой долгосрочный план.
Также убедитесь, что вы поместите полный URL изображения, а не только его относительный путь:
http://www.example.com/images/favicon.ico
А не:
images/favicon.ico