Ну, простыми словами:
Вы пытаетесь получить доступ к объекту, который не создан или в настоящее время не находится в памяти.
Итак, как это решить:
if (i == null) {
// Handle this
}
Поиск по имени означает, что некоторые фреймворки позволяют использовать FIndObjects с помощью строк, а код может выглядеть так: FindObject («ObjectName»);
Спасибо. Это помогло. Тем не менее, я понял, что мне нужно сделать это, чтобы заставить его работать
location.href="javascript: window.alert = function(x) {console.log(x)};"
, если я хотел удалить предупреждения и подтверждения, я могу сделать
location.href="javascript: window.alert = function(x) {console.log(x)}; window.confirm = function(){return true;};";
Как сказал @MrGlass, в настоящее время расширения Chrome выполняются в отдельной среде, ограничивая доступ к фактическому объекту window
и предоставляя дубликат, который действителен только для расширения.
Чтобы решить эту проблему, мы можем вставить элемент сценария непосредственно в документ. Таким образом, вы получаете доступ к среде документа и реальному объекту window
.
Сначала создайте функцию (я также добавил «подтвердить», потому что некоторые подтверждения меня так раздражали):
var disablerFunction = function () {
window.alert = function alert(msg) { console.log('Hidden Alert ' + msg); };
window.confirm = function confirm(msg) {
console.log("Hidden Confirm " + msg);
return true; /*simulates user clicking yes*/
};
};
Теперь, что мы собираемся сделать, это преобразовать эту функцию в текстовый скрипт и заключить ее в круглые скобки (чтобы избежать возможных конфликтов с фактическими vars в среде страницы):
var disablerCode = "(" + disablerFunction.toString() + ")();";
И, наконец, мы добавляем элемент скрипта и сразу удаляем его:
var disablerScriptElement = document.createElement('script');
disablerScriptElement.textContent = disablerCode;
document.documentElement.appendChild(disablerScriptElement);
disablerScriptElement.parentNode.removeChild(disablerScriptElement);
Да, вы можете, alert () - это всего лишь метод JavaScript, вы можете переопределить его функциональность.
window.alert = function alert(msg) {
console.log('Hidden Alert ' + msg);
};
Не забудьте запустить этот скрипт контента в document_start в манифесте через содержимое манифеста run_at модификатор скрипта.
Я считаю, что есть расширение, которое просто делает это. Разработчик называет его Nice Alert. https://chrome.google.com/extensions/detail/ehnbelnegmgdnjaghgomaakjcmpcakhk