脚本访问内嵌JavaScript变量

问题描述:

是否有一种方法在外部脚本加载之前刷新或注册内联变量?脚本访问内嵌JavaScript变量

即在MasterPage.Master身体

<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没有定义(匿名函数)

以前我们通过近代化加载时间线脚本。当我使用铬我可以看到default.aspx代码具有promoteSuggestionID设置,如果我在Timeline.PromotedSuggestion代码上放置断点。它好像这个脚本块还没有被注册,有没有一种方法可以设置优先级?

+2

如果'promoteSuggestionID'被定义在主体的最顶部并且'Timeline'被加载到底部,这应该可以工作。没有其他错误吗?你确定'timeline'是在'promoteSuggestionID'定义之后加载的吗? – 2015-03-02 12:18:56

+0

它看起来确实如此。我决定在document.ready中包装初始化代码(它使用由代码块设置的窗口变量) – Tim 2015-03-02 13:38:46

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

更改你的函数只是一个定义,并将其连接到document.ready上。这是正确的方法,并且您可以保证DOM和所有引用的JS在这一点上都很好。