在IE9中用作函数参数错误

时间:2011-11-29 15:14:42

标签: javascript internet-explorer-9

我有一个函数,如果被调用,包括一个js文件并使用js文件中的对象。问题出在IE9中。 IE9给我一个'swfobject'的错误是未定义的。所有其他浏览器工作正常。功能是:

function checkFlash(ver,cond){
  includeJS(context+'/scripts/swfobject.js', function () { 
    var playerVersion = swfobject.getFlashPlayerVersion().major; 
    if (playerVersion < ver) {
      cond();
    }
  }); 
}

function includeJS(p_file, callback) {
  var v_js  = document.createElement('script');
  v_js.type = 'text/javascript';
  v_js.src = p_file;
  v_js.onreadystatechange = callback; 
  v_js.onload = callback; 
  document.getElementsByTagName('head')[0].appendChild(v_js);
}

有什么方法可以解决这个错误吗?顺便说一句,您可以看到this thread以获取有关这些功能的更多信息。

我非常有信心它不是swfobject.js文件,因为它可以正常工作,但无论如何,here is the file

1 个答案:

答案 0 :(得分:2)

我已经读过onreadystatechange可以在实际加载数据之前触发。用Google搜索并到达http://msdn.microsoft.com/en-us/library/ms536957(v=vs.85).aspx,在示例中是:

document.onreadystatechange=fnStartInit;
function fnStartInit()
{
   if (document.readyState=="complete")
   {
      // Finish initialization.
   }
}

但它也适用于脚本节点。尝试一些事情:

v_js.onreadystatechange = function(){
    if (this.readyState=="complete"){
        callback();//or callback(window.event);
    }
}