【问题标题】:meteor loads script before DOM is ready - script is inside meteor.startup function在 DOM 准备好之前,meteor 加载脚本 - 脚本在meteor.startup 函数中
【发布时间】:2014-10-26 19:50:59
【问题描述】:

我正在尝试使用 document.querySelector("body") 但我没有返回任何 html 元素。

为什么,我的脚本调用在meteor.startup里面?

我正在使用 Iron 路由器进行路由...

if(Meteor.isClient){

        Meteor.startup(function(){

            myScript()

        })

    }

【问题讨论】:

    标签: meteor jquery-selectors startup iron-router


    【解决方案1】:

    Meteor.startup 只能在 DOMContentLoaded 事件之后触发。但 IronRouter 可能会在此之后渲染内容。

    尝试使用 IronRouter 的 onAfterAction 挂钩或模板的 rendered callback

    【讨论】:

      【解决方案2】:

      我最终这样做了:

          Template.masterLayout.rendered = function(){
      
              myscript = myScriptJS()
      
          }
      

      这会在我的iron router layout 的 .rendered 方法中调用 myScriptJS()。 myScriptJS 被执行并分配给一个全局变量(myscript),因为 myScriptJS 是一个模块模式,它将一个对象返回到它的命名空间。

      现在我可以在任何地方使用此代码:

      myscript.counter()
      

      【讨论】:

        猜你喜欢
        • 2021-06-22
        • 2015-08-20
        • 2020-12-18
        • 2014-07-19
        • 1970-01-01
        • 2011-05-06
        • 2019-04-05
        • 1970-01-01
        • 2023-04-04
        相关资源
        最近更新 更多