1

我有一个 ASP.Net 站点,其中包含一些 JS 文件引用。在我的母版页标题中,我有 3 个始终被引用的文件和一个函数

    <script src="/EPS/Scripts/jquery-1.10.0.min.js" type="text/javascript"></script>
    <script src="/EPS/Scripts/jquery-ui.min.js" type="text/javascript"></script>
    <script src="/EPS/Scripts/menu.js" type="text/javascript"></script>    

    <script language="javascript" type="text/javascript">

        function checkJavaScriptValidity() {
            document.getElementById("jsDisabled").style.visibility = 'hidden';
            document.getElementById("jsEnabled").style.visibility = 'visible';            
        }

    </script>

然后在我的一个 aspx 页面中,我有更多引用(也使用添加到页眉中ContentPlaceHolders

    *JS1*<script type="text/javascript" language="javascript" src="https://serverapi.arcgisonline.com/jsapi/arcgis/3.5"></script>       
    <script src="/EPS/Scripts/savestate.js" type="text/javascript" >   </script>
    *JS2*<script src="/EPS/EPS_Controls/wcMapControl.js" type="text/javascript" >  </script>

问题: 我有一个用户控件,它使用我用JS1JS2标记的文件(这些标签不在源代码中)。当控件被加载/使用时,我在 JS 中得到一个错误或者它没有运行。在过去的几个小时里,我尝试了几件事(订单和地点),但并没有什么不同。

浏览器

IE8:在这个当前顺序中,我收到错误: JS1 中的“Microsoft JScript 运行时错误:'undefined' is null or not an object”

FF v22.0我没有收到任何错误消息(或者至少我找不到它们)但我知道我的 JS 没有运行

现在这是我的困境,我在另一个测试项目中使用了这个相同的控件和那些相同的JS 文件,它工作正常,没有任何问题!

问题关于为什么会发生这种情况的任何线索/想法?我的项目中的哪些配置会影响/导致这种情况?

4

2 回答 2

1

请记住,当涉及到 javascript 时,一切都取决于浏览器看到的内容 - 您的服务器代码、项目配置或应用程序中的任何其他内容都不会导致 javascript 出现问题。

考虑到这一点,只需在您的页面上运行查看源代码。我的猜测是您的脚本标签在控件之后被放入,因此控件正在尝试执行尚未定义的事情。一旦你确认了这一点,找出带有脚本的内容占位符在哪里,并相应地移动它——它现在可能在正文中,只需要进入头部,或者至少在正文中更高。

于 2013-07-29T20:21:29.217 回答
1

为确保正确加载外部脚本,请在母版页中使用 ScriptManager,在内容页面和用户控件中使用 ScriptManagerProxy。例如,在母版页中:

<asp:ScriptManager ID="ScriptManager1" runat="server">
<Scripts>
    <asp:ScriptReference Path="/EPS/Scripts/jquery-1.10.0.min.js" />
    <asp:ScriptReference Path="/EPS/Scripts/jquery-ui.min.js" />
    <asp:ScriptReference Path="/EPS/Scripts/menu.js" />
</Scripts>
</asp:ScriptManager>

在内容页面中

<asp:ScriptManagerProxy ID="ScriptManagerProxy1" runat="server">
<Scripts>
    <asp:ScriptReference Path="https://serverapi.arcgisonline.com/jsapi/arcgis/3.5" />
    <asp:ScriptReference Path="/EPS/Scripts/savestate.js" />
</Scripts>
</asp:ScriptManagerProxy>
于 2013-07-29T20:21:57.830 回答