这里我称之为servlet。 document.getElementById('testURL').value + '?opn=getKey&rand='+ Math.random();
完成后,调用servlet。这将返回密钥并调用callback()
函数。在IE 9中,这很好用。但是在这个呼叫之后,它需要一些暂停。所以我不得不提出以下警报。任何人都可以帮助我知道IE10中为什么会出现这个问题?以及如何解决这个问题?警报不是一种正确的方法。提前谢谢!
function getKey(){
var headID = document.getElementsByTagName("head")[0];
var scriptEmt =document.createElement('script');
scriptEmt.type='text/javascript';
scriptEmt.src=document.getElementById('testURL').value + 'opn=getKey&rand='+ Math.random();
if(navigator.appVersion.indexOf("MSIE 10.0") != -1){
alert("alert1..");
alert("alert2....");
}
headID.appendChild(scriptEmt);
}
function callback(){
...
...
}
答案 0 :(得分:0)
查看代码,问题就是那个
headID.appendChild(scriptEmt);
正在脚本“src”属性实际完成填充之前执行,这意味着当实际附加到文档的脚本元素没有“src”属性时,这意味着实际上没有代码到实际上在scriptEmt元素中执行。这也解释了为什么回调永远不会被调用。
更好的解决方案是使用ajax请求来获取密钥。使用ajax从servlet加载键值,只有键值后才能创建脚本标记并将其附加到文档中。这样,您将确保脚本src属性具有值,并且一旦将其附加到文档,脚本将被执行并且回调被调用。
至于为什么这会影响IE10,我只能猜测,但我会猜测对IE10所做的更改。微软在IE10上做了很多改变,其中很多是围绕javascript性能的,所以可能事情只是运行一小段时间,导致你看到的行为。就像我说的只是一个猜测,我没有“真实”的数据或事实来支持这一点!