#javascript #firefox #firefox-addon #firefox4 #permission-denied
#javascript #firefox #firefox-дополнение #firefox4 #отказано в разрешении
Вопрос:
После обновления до Firefox 4 я начал видеть эту ошибку на сайте, который я поддерживаю:
Permission denied for <...> to call method HTMLAnchorElement.focus
Я создал простой сценарий для воссоздания ошибки:
<html>
<body>
<a id="lnk" href="http://www.google.com/">Google</a>
<form>
<input type="text" />
<input type="submit" />
</form>
<script>
document.onkeypress = function(e) {
e = (e ? e : event);
var key = (e.which ? e.which : e.keyCode);
if(key == 13) {
var lnk = document.getElementById('lnk');
lnk.focus();
return false;
}
}
</script>
</body>
</html>
Это отлично работало до обновления до Firefox 4… однако я также не верю, что проблема в точности связана с Firefox. Я говорю это, потому что на самом деле это происходит только при установке на моем рабочем столе. Я могу использовать ту же страницу при других установках FF4 без ошибок. Я отключил все свои расширения и перезапустил, но ошибка сохраняется. Есть идеи, какие изменения / дополнения / плагины / что бы у меня ни было в моей установке, которые могли бы вызвать это?
Спасибо…
Комментарии:
1. Чего вы пытаетесь достичь, устанавливая фокус на ссылку, когда пользователь нажимает enter?
2. Я попробовал вашу страницу в firfox 4 без проблем. нажатие enter на странице фокусирует ссылку. Я не использую никаких дополнений, я бы попробовал отключить ваши и повторно включать их по одному за раз
3. @daniellmb: Исходный код с моего сайта фактически фокусирует ссылку, а затем «щелкает» по ней. Фокус здесь потому, что на некоторых наших страницах текстовые поля имеют события onblur, которые должны запускаться, и простой щелчок по ссылке не позволял этого.
4. @kennebec : Как указано, я отключил все свои расширения, и проблема сохраняется, в противном случае я бы последовал вашему подходу. Так что я действительно не думаю, что это расширение (если только оно не может изменить поведение FF даже при отключении). Есть еще идеи? Спасибо…
5. Весь этот код выполняется в том же домене, верно? Это не проблема безопасности с перекрестным источником, не так ли?
Ответ №1:
Поскольку это происходит только на этой одной машине, вероятно, это проблема среды с вашей настройкой, трудно сказать, я также не могу ее воспроизвести. Я видел несколько примеров, в которых предлагается добавить задержку setTimeout, снятую в темноте, но вы могли бы попробовать это.
Комментарии:
1. Спасибо за ответ, daniellmb. Я согласен с вами, что это проблема среды — и, вполне вероятно, Stack Overflow — не место для этого вопроса, но я не был уверен, что какой-либо сайт stack также будет правильным… итак, я подумал, что опубликую сообщение, чтобы узнать, видел ли его кто-нибудь еще, или я делаю что-то не так в коде.