Якорная цепочка тегов Chrome v71 ссылается на внутреннюю область тега img - PullRequest
0 голосов
/ 07 декабря 2018

После обновления до Chrome v71 я обнаружил странное поведение в области видимости тега привязки, внутри которого есть тег img, например:

<a href="#none" onclick="debugger;complete();">
  <img src="https://clickmeuk.net/wp-content/uploads/2016/04/click-me-logo2x.png"/>
</a>
...
function complete() {
   alert("haha");
}

В Chrome до версии v71 и других браузеров,щелчок по img вызовет событие onclick и отобразится предупреждение.Но с момента последнего обновления тот же код приводит к появлению ошибки ниже:

Uncaught TypeError: complete is not a function at HTMLAnchorElement.onclick (index.html:6)

Это происходит потому, что в Chrome v71 область щелчка тега привязки достигает области тега img до он достигает глобальной области видимости, поэтому ссылается на поле complete узла img вместо функции complete().В этом pen .

это воспроизводимо. <img> является дочерним узлом <a>, поэтому при запуске onclick ссылка на область действия <img> кажется странной.Конечно, вы можете исправить это, просто изменив имя функции на что-то отличное от complete.Но я не знаю, что могло вызвать изменения.Chrome v70 или Explorer или Safari работает как положено.Может ли это быть ошибкой?Или я пропустил какое-то обновление, которое еще не реализовано другими браузерами?

1 Ответ

0 голосов
/ 08 декабря 2018

Выполнение bisect над вашим тестовым набором показывает, что изменение было внесено в этот ChangeLog .

Из этого списка коммитов, Создайте новый EventHandler и базовый класс для EventListener / EventHandler от Юки Ямада представляется наиболее вероятной причиной изменения поведения в этой области.

Чтение описания фиксации и связанных crbugs 664676 & 759461 , ничто не позволяет думать, что это запланированное изменение.

В Chrome возникли проблемы с областью EventTarget, которую они использовали, и спецификации немного изменились, но отчто я читаю, я не вижу ничего, что сделало бы наблюдаемое поведение ожидаемым, и на это поведение даже не ссылались.

Итак, отсюда все это звучит как ошибка да.Не стесняйтесь открывать новый выпуск на плате хрома , в Blink> Binding компонент.

Возможно, вы захотите сообщить им URL-адрес ChangeLog , который показан на экране.Они смогут сказать вам, действительно ли это было задумано или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...