Серверный код, такой как PHP, всегда всегда скрыт для посетителей (если только у вас нет какой-либо уязвимости безопасности).
Код на стороне клиента, такой как HTML, JavaScript и CSS, всегда виден посетителю. Даже если вы не можете сразу увидеть это в DOM, он будет где-то там скрываться.
Наиболее вероятным сценарием является то, что он скрыт во встроенном файле .js
или .css
, который будет выглядеть примерно так:
HTML может быть выведен на страница через JavaScript, которая не будет отображаться в DOM (хотя она будет отображаться с PHP echo
). HTML также может быть «скрыт» с помощью тегов и HTML-импорта .
У JavaScript есть множество способов скрыть / исказить его, поэтому его сложно отследить. В файлах DOM / .js
может быть какой-то странный, «нечитаемый» код, который, в свою очередь, может выводить сам HTML.
Я предполагаю, что Вы делаете насмешку / блокирующий (потому что Вы упомянули спецификации).
В моем случае я сталкиваюсь с этими предупреждениями, когда я блокирую объект ActiveRecord и получаю доступ к его идентификационному атрибуту.
В случаях, где Вы ожидаете получать доступ к идентификатору своего объекта ActiveRecord, я рекомендовал бы сделать следующее:
mock("MyActiveRecordObject", :id => 1001)
Когда объект происходит от ActiveRecord::Base
, вызов к id
переходит к AR:: B id
метод, а не устаревший на Object
.
То предупреждение обычно означает, что один из моих объектов не то, что я думаю, что это.
Ваш объект не является на самом деле объектом AR, обычно указывая, что некоторый поиск данных перестал работать (Table.find_by_name('nonexistent name')
возвратится nil
). Если все, что Вы хотите сделать, закрывается от видимых предупреждений, можно выключить whiny_nils
в Вашей конфигурации иначе сделайте is_a?
тест прежде, чем попытаться получить доступ к атрибутам объекта и обработать случай возникновения отказов корректно.
object#id, предупреждающие только, происходят на регулярных рубиновых классах как NilClass. ActiveRecord:: Основа переопределяет object#id