Javascript 动态加载jQuery mobile会使IE最小化

Javascript 动态加载jQuery mobile会使IE最小化,javascript,jquery,debugging,internet-explorer,jquery-mobile,Javascript,Jquery,Debugging,Internet Explorer,Jquery Mobile,好吧,这是迄今为止我遇到的最奇怪的错误。不过这很简单。如果我在任何版本的Internet Explorer中动态加载jQuery和jQuery mobile,实际的IE窗口将最小化。这发生在通过IETester的所有IE版本中,但是,如果我在IE9中运行完整版本,它会启动兼容性模式,并且由于某些原因不会最小化 我尝试了各种加载脚本的方法(在示例代码中进行了注释),所有这些方法都产生了相同的行为 为什么会这样?有办法绕过它吗 我试图“修复”它: @josh3736几乎完全正确,它在代码中的某个地方

好吧,这是迄今为止我遇到的最奇怪的错误。不过这很简单。如果我在任何版本的Internet Explorer中动态加载jQuery和jQuery mobile,实际的IE窗口将最小化。这发生在通过IETester的所有IE版本中,但是,如果我在IE9中运行完整版本,它会启动兼容性模式,并且由于某些原因不会最小化

我尝试了各种加载脚本的方法(在示例代码中进行了注释),所有这些方法都产生了相同的行为

为什么会这样?有办法绕过它吗

我试图“修复”它:

@josh3736几乎完全正确,它在代码中的某个地方触发了一个
document.body.blur()
,从而使窗口最小化

我的修复程序只是将该函数替换为无操作函数。我无法让脚本标记在完成加载时触发onload,因此替换函数(如果需要)由您决定

然而,所有这些似乎都是jQuery移动库中的一个bug,因此您可能应该向他们提交一份bug报告。然而,我不确定这是否会给他们带来太大的麻烦,因为IE上有一个针对手机/平板电脑的框架的bug

注意:这是一段可怕的代码,它取代了本机函数。如果可能的话,请不要使用此选项。

这是jQuery mobile中的一个选项。令人不快的是

调用
blur()
将IE窗口发送到堆栈的后面

作为一种解决方法,您可以通过将脚本标记实际放置在HTML的
中来避免这种情况

<!DOCTYPE HTML>
<html>
  <head>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/latest/jquery.mobile.css" />
    <script src="http://code.jquery.com/jquery-1.6.2.js"></script>
    <script src="http://code.jquery.com/mobile/latest/jquery.mobile.js"></script>

...

...
将脚本标记放在文档中的其他位置或通过脚本插入它们会触发错误


演示正在运行的变通方法。请注意,这仅适用于顶级文档。如果文档位于
中,错误仍会出现。因此,如果在IE7/8中打开JSFIDLE编辑器,它仍然会被发送到后面;但是,如果您只打开,它将不会。

我可以确认,我在IE 7中看到了在普通VM上发生的情况。具体来说,窗口并没有最小化-它被发送到堆栈的底部(最小化其他窗口,您会发现您的IE窗口仍然打开),这感觉就像是在某处调用
window.blur()。(在我的IE 9上,它既不会最小化/模糊,也不会进入兼容模式。)“我不确定IE上有一个用于手机/平板电脑的框架的bug会让他们太烦恼。”IE在手机/平板电脑上,随着新的Windows 8平板电脑的推出,这将是IE9/10。我的网站允许用户创建移动页面,其预览使用其移动页面的实际页面HTML/CSS/JS(这是一个好主意,原因很明显,对吧)。它在IE9中中断。
<!DOCTYPE HTML>
<html>
  <head>
    <link rel="stylesheet" href="http://code.jquery.com/mobile/latest/jquery.mobile.css" />
    <script src="http://code.jquery.com/jquery-1.6.2.js"></script>
    <script src="http://code.jquery.com/mobile/latest/jquery.mobile.js"></script>

...