【问题标题】:JavaScript Functions Working Locally but not in Test deploymentJavaScript 函数在本地工作但不在测试部署中
【发布时间】:2023-03-10 03:03:01
【问题描述】:

我有几个按钮可以在点击时隐藏或显示页面上的其他元素。

按钮的格式如下:

<button type="button" id="BTN" onclick="takeAction()">

JavaScript 的格式为:

<script type="text/javascript">
    function takeAction() {
         document.getElementById("ELEMENT1_HDR").style.display = "";
         document.getElementById("ELEMENT1_BODY").style.display = "";
         document.getElementById("ELEMENT2").style.display = "none";
         document.getElementById("ELEMENT3").style.display = "none";
     }
</script>

在本地,这在严格使用 HTML 和 JavaScript 以及其他功能在 .aspx.cs 文件中使用 c# 时工作得很好。

但是,当我发布它并通过 ip 地址访问它时,单击按钮没有任何效果。在执行检查元素并单击按钮时,我收到以下错误:

属性 'takeAction' 的值为 null 或未定义,不是 Function 对象

我做错了什么,它在我的开发环境中有效,但在我的模拟 Prod 环境中无效?

我尝试将&lt;script&gt; 标签内容放在&lt;header&gt;&lt;body&gt; 标签下,以确保发布时没有差异。 Visual Studio 会不会在发布时损坏它?

不知何故:当我从 page1 开始并单击“查看”按钮导航到特定记录时,已发布版本正在将记录视图页面加载到屏幕上,但保留 page1 名称。在本地完成时,它实际上会更改页面地址 - 这可能是函数在本地工作但在已发布环境中不起作用的原因

我选择了一个同时存在于 page1 和 page2 上的函数,称为 noCanDoYet(),它仅调用警报函数并将消息发布到屏幕上:“此功能尚未实现”。即使在两个页面上都定义了此功能,我也会收到相同的错误。

alert("help") 可以工作。

以下导航到特定记录的方式是否会导致本地环境没有的 Prod 类型环境出现问题?

protected void navigateView(object sender, EventArgs e)
{
    LinkButton lb = (LinkButton)sender;
    setCurrentlySelectedRecord(lb.CommandArgument);
    setViewEdit("View");
    Server.Transfer("page2.aspx");
}

【问题讨论】:

  • 在您的 prod 环境中,如果您查看源代码,您的脚本标签是否存在?尝试 CTRL+F5 强制刷新,以防它过期。
  • 它就在那里。我明白了:&lt;script type="text/javascript"&gt; ...function takeAction(){...}...&lt;/script&gt;
  • 调试工具的控制台是否有错误?如果您使用浏览器调试工具中的即时窗口自己调用takeAction(),会发生什么情况?
  • 开发者工具的控制台除了上面引用的错误外,还有:附件页面针对文档模式5。某些控制台API和功能可能不可用。然后它进入 SCRIP5007 的错误:... 有趣的是,虽然它说文件是一回事,但它所在的页面应该引用不同的文件名...所以如果它指向错误的文件,难怪它找不到函数。

标签: javascript asp.net


【解决方案1】:

我认为问题与 IE11 有关。我刚刚安装了 Chrome,一切正常。

IE11 现在也可以在 &lt;head&gt; 中添加 &lt;meta http-equiv="x-ua-compatible" content="IE=edge; charset=UTF-8"/&gt;,就在我的 &lt;script&gt; 之前。

谢谢,@JhWebDevGuy

【讨论】:

  • 我会重新检查您的答案。您是否需要支持 Internet Explorer 11?如果是这样,你仍然有你的问题。尽管开发人员想说“不再使用 IE”,尽管微软自己甚至不支持 IE,但仍有足够的用户仍在使用 Internet Explorer。如果您不需要支持它,请注意继续执行该决定会失去一些用户。现在关于 SCRIP5007 错误,THIS 文章给出了答案。
  • 这看起来很有趣,但我不知道那是什么意思。我讨厌表现出我的无知...
  • @JhWebDevGuy 没关系,我在更下方找到了&lt;meta http-equiv="x-ua-compatible" content="IE=edge; charset=UTF-8"/&gt;,这很有效!谢谢!!具体来说:stackoverflow.com/a/48320394/11035837
猜你喜欢
  • 2020-01-07
  • 1970-01-01
  • 1970-01-01
  • 2021-06-28
  • 2021-05-22
  • 1970-01-01
  • 1970-01-01
  • 2020-09-24
  • 1970-01-01
相关资源
最近更新 更多