Отказано в разрешении на вызов метода HTMLAnchorElement.focus

#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 также будет правильным… итак, я подумал, что опубликую сообщение, чтобы узнать, видел ли его кто-нибудь еще, или я делаю что-то не так в коде.