脚本访问内联 javascript 变量

scripts access to inline javascript variables

是否有在加载外部脚本之前刷新或注册内联变量的方法?

即在 MasterPage.Master Body

的顶部有一个脚本块
<script type="text/javascript">
  var promoteSuggestionID = "<%= SuggestionID %>";
</script>

页面正文底部的捆绑脚本。

  <%: Scripts.Render("~/scripts/Timeline") %>

时间轴脚本

(function (TimeLine) {
   TimeLine.PromoteSuggestion = promoteSuggestionID;
 //....Main body of script

}((window.TimeLine) ? window.TimeLine : (window.TimeLine = {})));

使用 Chrome 当点击时间线脚本中的行时会显示以下错误。

未捕获的 ReferenceError:未定义 promoteSuggestionID(匿名函数)

之前我们是通过 modernizer 加载时间线脚本。当我使用 chrome 时,如果我在 Timeline.PromotedSuggestion 代码上放置断点,我可以看到 default.aspx 代码设置了 promotedSuggestionID。好像这个脚本块还没有注册,有没有办法设置优先级?

出于这个原因,您真的不应该像这样在 运行 页面上使用 JavaScript。我的意思是,如果我有 JavaScript 将在解析时执行,那么我无法保证它何时执行。而且,根据浏览器、页面顺序等,它很可能 运行 在所有内容完全加载之前。

将您的函数更改为只是一个定义,并将其连接起来以便在 document.ready 上调用。这是正确的方法,你可以保证 DOM 和所有引用的 JS 在那个时候都可以正常运行。