小编DPH*_*use的帖子

Javascript仅在Internet Explorer上运行一次,在开发人员工具打开时正常运行

我们在IE 11上运行javascript时遇到了一个不寻常的问题.我在我们运行IE8的服务器上试了一下,出现了同样的问题.但是,它在Chrome和Mozilla上运行良好.这是有问题的代码:

SetGuideFatningCookie(fid); //set a cookie according to user choice

var validFatningCombo = ValidFatningCheck(); //ask server if user choice is valid using XMLHttpRequest GET request
if(validFatningCombo)
    window.location.href = GetGuideTilbehoerURL(); //if valid redirect user to next page
else
    popAutoSizeFancy("#GLfancy"); //if not show a fancybox with error text
Run Code Online (Sandbox Code Playgroud)

用户选择7种选择中的一种.然后他们单击一个运行上述代码的按钮.代码设置包含用户选择的cookie,并询问服务器选择是否有效.如果有效 - 我们重定向用户,如果没有,我们打开一个包含一些错误文本和两个按钮的fancybox - "再试一次"(关闭框,他们可以再试一次)和"向我们发送消息"(将用户重定向到我们的"问我们一个问题"页面".

用户第一次进入此过程时代码运行正常.然而,如果他们选择了无效的选择,他们会关闭fancybox并尝试选择另一个选择并继续 - >然后无论用户选择什么,总是会出现花式框.如果他们选择了有效的选择并继续,请重定向到下一页,然后返回此页面并选择无效的选择并按继续 - >然后他们可以继续到下一页,而不会出现fancybox.

但是,如果打开IE的开发人员工具,则代码每次运行都是正确的.我发现许多线程描述这是console.log的问题.我从所有.js文件中删除了对console.log的每个引用.它可能是我们正在使用的外部库之一,如jquery,modernizr,fancybox和menucool的工具提示库.

因此我尝试为IE包含​​一个控制台回退函数,就像这个线程所暗示的那样: 为什么JavaScript只在IE中打开开发人员工具后才能工作?

我目前正在尝试使用这个,我尝试了从我连接到的每一个其他后备控制台.

if (!window.console) window.console = {};
if (!window.console.log) window.console.log = function () { };
Run Code Online (Sandbox Code Playgroud)

我尝试包括它:

  1. 我们的.js文件中的某个地方
  2. 加载所有.js文件和所有外部库后,脚本元素在头部
  3. 在加载所有.js文件和所有外部库之前,脚本元素在头部
  4. 在$(document).ready(function(){})中; ,在加载所有其他js后的头部脚本元素中

到目前为止,我在这4个位置中的任何一个尝试过的代码都没有解决问题.它在IE中的行为总是一样的.到目前为止,我找不到另一个解释,而不是"控制台"解决这个问题,所以如果有人对它有任何见解,我将不胜感激. …

javascript internet-explorer

4
推荐指数
1
解决办法
899
查看次数

标签 统计

internet-explorer ×1

javascript ×1