脚本访问内联javascript变量

时间:2015-03-02 12:13:29

标签: javascript jquery asp.net webforms

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

即。在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(匿名函数)

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

1 个答案:

答案 0 :(得分:1)

由于这个原因,你应该永远不会让页面上的JavaScript像这样运行。我的意思是,如果我有JavaScript将在解析时执行,那么我不能保证它何时执行。而且,根据浏览器,页面顺序等,它可能会在所有内容完全加载之前运行。

将您的功能更改为一个定义,并将其连接起来以在document.ready上调用。这是正确的方法,你可以保证DOM和所有引用的JS在那时都很好。