У меня была похожая проблема, но ни одно из этих исправлений не помогло. Проблема была в том, что моей кнопки еще не было на странице. Исправление для этого в конечном итоге идет от этого:
//Bad code.
var btn = document.createElement('button');
btn.onClick = function() { console.log("hey"); }
к этому:
//Working Code. I don't like it, but it works.
var btn = document.createElement('button');
var wrapper = document.createElement('div');
wrapper.appendChild(btn);
document.body.appendChild(wrapper);
var buttons = wrapper.getElementsByTagName("BUTTON");
buttons[0].onclick = function(){ console.log("hey"); }
Понятия не имею, почему это работает. Добавление кнопки на страницу и любое другое обращение к ней не помогло.