繁体   English   中英

Meteor.js: <script> tag doesn't work inside <body>

[英]Meteor.js: <script> tag doesn't work inside <body>

body标签内的简单脚本标签似乎不起作用。 警报不会在下面的代码中触发:

<body>
   <script type="text/javascript">
      alert('Hello');
   </script>

      {{>main}}

</body>

知道为什么吗?

编辑:只是尝试使用新的流星应用程序,仍然没有警报标记:

<head>
  <title>test</title>
</head>

<body>

  <script type="text/javascript">
     alert('Hello');
  </script>

  {{> hello}}
</body>

<template name="hello">
  <h1>Hello World!</h1>
  {{greeting}}
  <input type="button" value="Click" />
</template>

奇怪的是当我复制粘贴html的源代码时,制作了一个新的html页面,并且警报将起作用。

编辑3:我在这里部署了这个应用程序: http ://alert-in-body-test.meteor.com/你有警报箱吗?

这个问题在当前版本的Meteor(版本0.5.4)中仍然有用,所以我想描述如何在正文末尾包含脚本。

要在正文的末尾执行javascript,请注册Handlebars帮助程序并将相关代码放在那里,如下所示:

在client.html中:

<body>
  {{renderPage}}

  {{afterBody}}
</body>

...

在client.js中:

if (typeof Handlebars !== 'undefined') {
  Handlebars.registerHelper('afterBody', function(name, options) {
    $('body').append('AFTER BODY');
  });
}

(有关为何需要这样做的详细说明,请参阅Rahul在此处对类似问题的回答: https//stackoverflow.com/a/14002991/219238

它为我工作

在onrender中调用此jquery

$ .getScript('你的网址')

它应该工作。

我刚刚将其粘贴到我的一个项目中,并且工作正常。

你{{>主}}对我来说很难受。 还要确保<body>位于<html>标记内。

Meteor通过将您的页面呈现为模板来构建Javascript中的整个DOM - 浏览器看到的页面的“来源”基本上是:

 <script type="text/javascript" src="/5a8a37bef5095c69bcd3844caf3532e1ba6d49bf.js"></script>

我找不到一个明确的页面,说明在这样的模板中嵌入脚本标记不会导致它被执行,但它肯定会违背框架试图实现的精神。

如果要实现标记和逻辑的清晰分离,那么为什么要将它放在模板中。 更好的解决方案是使用meteor.startup调用

而不是在开发人员工具上查看渲染的html,尝试查看真正下载的HTML。 你会发现一个(可能)空标签,里面有大量的脚本标签。

换句话说,你的流星应用程序的主体不是最终html的主体,它只是你的主要模板。

相反,Meteor发布的这些脚本将加载您的模板。 因此,您的代码将无法运行,因为它已被放置在那里。 这就像你操纵DOM(用jQuery,例如),在加载后在DOM中放置一个脚本标记。 此脚本标记将不会运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM