Javascript:点击注入按钮?

时间:2013-10-28 10:41:51

标签: javascript button click code-injection

我的问题可能看起来很奇怪,但我希望我的javascript代码点击我之前在页面中使用相同脚本注入的按钮。 我试过这样的事情:

var injectionarea = document.getElementById('whereIwant');
injectionarea.innerHTML += "<button id=\"my_button\">Test</button>";

document.getElementById('my_button').onclick = function() {
                                                            //my stuff
                                                          };

my_button.click();

但它返回一个未定义的元素......

2 个答案:

答案 0 :(得分:2)

您正在尝试做的事情存在一些问题。作为一般规则,将dom控件作为字符串注入可能会产生一些奇怪的事情(例如,容器元素中的任何子节点都可能恢复到原始页面状态)。所以最好通过document.createElement函数创建对象。

无论如何,在你的情况下,你只需要“等待”dom读取你的注射,解析它并创建元素(你应该自己完成的事情,如上所述)。

因此,添加一个setTimeout,就像在下面的例子中一样,即使它不是我想看到的最干净的代码片段,也会使它工作:

var injectionarea = document.getElementById('whereIwant');
injectionarea.innerHTML += "<button id=\"my_button\">Test</button>";

setTimeout(function(){
   document.getElementById('my_button').onclick = function() {
                                                            //my stuff
                                                          };

   my_button.click();
},0);

永远记住JS是单线程的,因此在你发布工作线程之前,你所做的任何需要由DOM解析的编辑都不会在DOM中提供。

答案 1 :(得分:-1)

试试这个:

function a(){
    var injectionarea = document.getElementById('whereIwant');
    injectionarea.innerHTML += "<button id=\"my_button\" onclick=\"doClick()\">Test</button>";
}
function doClick(){
//my stuff
}