javascript - 顶级脚本 block 执行了两次?

标签 javascript asp.net html

我一直在努力弄清楚这是怎么可能的。所以我有一个 ASP.Net 网站。在呈现的 HTML 中类似

<script type="text/javascript">
alert('should run once');
if(x === undefined){
  var x=true;
  alert('new x variable');
}else{
  alert('x exists');
}
</script>

但是,无论出于何种原因,应该运行一次的东西实际上运行了两次。在 Firebug 下调试时,我实际上单步执行了 alertnew x variable,此时它似乎会同时显示两个警报。之后,它跳到 x exists,就好像有两个独立的线程在运行相同的代码。这不会发生在 Internet Explorer 8 中,但会发生在 Chrome 和 Firefox 中(截至该日期的最新版本)

所以这就是警报吐出的内容:

  1. 应该运行一次
  2. 新的 x 变量
  3. 应该运行一次
  4. x存在

我知道我可以通过将所有内容包装在 has_run 变量中来解决这个问题,但我更愿意了解这里发生了什么。

脚本 block 未注册或其他任何东西,它是通过 Literal 控件直接插入的。另外,页面上有一个 UpdatePanel,但是这个脚本 block 不在 UpdatePanel 中,我已经确认没有 UpdatePanel 正在刷新。我已经三次检查过这段代码只在我的 HTML 中出现过一次。加载时没有其他 HTTP 请求(例如 UpdatePanel)正在发出。只需几个 jQuery.ajax 加载。

这怎么可能?我如何解决它?

最佳答案

我在@mikemanne 的帮助下解决了这个问题

jQuery.dialog 将移动 DOM 中的对话框 div。所以这意味着它会导致它被执行两次,显然可能是在不同的线程中导致不稳定的行为。

一个例子:http://jsbin.com/akacah

关于javascript - 顶级脚本 block 执行了两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6932422/

相关文章:

javascript - 在 'onclick' 事件上打开固定窗口 - javascript 和 html

python - BeautifulSoup 文本挖掘 - 变量字符串

javascript - 如果输入为空,则以逐步形式放置错误类

javascript - 迭代和修改 Firebase 数组会导致未定义

javascript - React/JS - onMouseOver 改变文本

javascript - React Gulpfile watchify 不更新

asp.net - 使用 EntityDataSource 进行联接

asp.net - 服务不在 Docker 中进行内部通信

asp.net - 部分 View 和登录时与模型冲突

html - 导航上的 CSS 样式问题