Javascript 是否可以将所有DOM发送到整个网站(而不仅仅是一条路线)

Javascript 是否可以将所有DOM发送到整个网站(而不仅仅是一条路线),javascript,html,dom,Javascript,Html,Dom,我有一个网页(Angular 2中的前端),我将一个简单的外部javascript脚本附加到index.html的头部 现在,我想从这个外部javascript将一些函数附加到一些按钮的onclick事件 问题是,我有很多到这个网站的路线,在每个路线上我有不同的按钮 外部javascript显然在网页加载时初始化一次,我不能绑定属于其他路由的其他DOM 例如,如果我要路由/登录,并使用idlogin将onclick附加到按钮,然后刷新页面,那么确定javascript将工作 但是,如果我在rou

我有一个网页(Angular 2中的前端),我将一个简单的外部javascript脚本附加到index.html的头部

现在,我想从这个外部javascript将一些函数附加到一些按钮的onclick事件

问题是,我有很多到这个网站的路线,在每个路线上我有不同的按钮

外部javascript显然在网页加载时初始化一次,我不能绑定属于其他路由的其他DOM

例如,如果我要路由/登录,并使用idlogin将onclick附加到按钮,然后刷新页面,那么确定javascript将工作

但是,如果我在route/login,并将onclick附加到idregister的按钮注册(属于不同的路由例如/register)并刷新页面,那么javascript将无法工作,因为按钮注册不属于此路由。如果我再次将路由更改为/注册,javascript将无法工作

因此,一个可能的解决方案是,在加载外部javascript后,将所有DOM(从所有路由)绑定到整个web页面,然后绑定我想要的函数

我可以这样做吗

提前谢谢


编辑:请注意,onclick与某个按钮的绑定必须发生在外部javascript上。我不会写字。所有DOM绑定必须在脚本上动态发生。

您需要使用事件委派。下面是一个关于该方法的简单示例:

   /**
    * Example of DOM event delegation
    * @author: Georgi Naumov
    * gonaumov@gmail.com for contacts and suggestions
    **/
    window.addEventListener('click', function(event) {
        if(event.target && event.target.tagName && event.target.tagName === 'INPUT') {
          console.log('button is clicked');
       }
    }); 
此代码段将为所有按钮执行某些操作,包括将来创建的按钮。 您可以在此处查看更多信息: 您可能可以使用某些条件来仅分离所需的按钮

请记住:

这不是有棱角的方式。如果您在路由级别上有一些解决方案,可能会更好

什么是DOMS?