【问题标题】:Replace onclick, onmouseover and onmouseout with extern javascript用 extern javascript 替换 onclick、onmouseover 和 onmouseout
【发布时间】:2012-07-25 02:42:04
【问题描述】:

我想用 javascript 中的 extern 替换我的 onclick、onmouseover 和 onmouseout 属性,这些属性现在在我的 html 中内联。

html:

<div onclick:"myfunctiononclick()"></div>
<div onmouseover:"myfunctionmouseover()"></div>
<div onmouseout:"myfunctionmouseout()"></div>

javascript:

function myfunctiononclick(){something};
function myfunctiononmouseover(){something};
function myfunctiononmouseout(){something};

我为什么要这样做?因为 chrome 不允许在扩展中使用内联 javascript。

谢谢

顺便说一句,请不要使用 jQuery,所以我知道发生了什么。

【问题讨论】:

    标签: javascript html google-chrome google-chrome-extension mouseevent


    【解决方案1】:

    以某种方式获取对元素的引用,然后 addEventListener:

    document.addEventListener("DOMContentLoaded", function() {
        //This code is ran when the DOM content has been loaded
        //I.E. the elements we are trying to get exist on the page
        var divs = document.querySelectorAll("div");
        divs[0].addEventListener("click", myfunctiononclick, false);
        divs[1].addEventListener("mouseover", myfunctiononmouseover, false);
        divs[2].addEventListener("mouseout", myfunctiononmouseout, false);
    }, false);
    

    【讨论】:

    • 请注意,并非所有浏览器(即 IE)都适用:请参阅此解决方法:*.com/questions/9769868/…
    • @devundef 这是用于谷歌浏览器扩展的我为什么要这样做?因为 chrome 不允许在扩展中使用内联 javascript。
    • 谢谢,有没有办法用类做到这一点?
    • @user1544892 document.querySelectorAll(".some-class") 返回具有"some-class" 类的元素列表
    • 出于某种原因,它对我不起作用。这是我所做的:将类'test'添加到一些div中,然后将其添加到我的javascript文件中: var classes = document.querySelectorAll(".test"); classes[0].addEventListener("mouseover", myfunctiononmouseover, false); classes[1].addEventListener("mouseout", myfunctiononmouseout, false);