Windows7中IE8和IE9的问题:load()后无法调用函数

时间:2016-03-16 19:57:57

标签: jquery internet-explorer-8

<script type="text/javascript" src="https://domain/functionfile.js"></script>

<script type="text/javascript">
var jQ110 = $.noConflict(true);   
jQ110(function ($) {
if ($( "#element20-input" ).length>0) {
    $( "#element20-input" ).load( 
    "https://domain/page #elementwidget-input", function() {    
        widgetfrontend(248);
    });
}
});
</script>

HTML

<div id="element20-input">Loading...</div>
<div id="elementwidget-result">Loading...</div>

以上在Safari,Opera,Firefox,Chrome等和IE9 +中都能正常工作,但在IE8中则不行。控制台抛出“Object expected”行(使用IE8时):

widgetfrontend(248);

widgetfrontend函数在https://domain/functionfile.js中定义如下:

function widgetfrontend( mun_id ) {
    alert( mun_id );
}

为什么会出错?是不是javascript正确加载或什么?这是为什么?

更新

使用

<script type="text/javascript" src="//code.jquery.com/jquery-1.10.2.js"></script> 

我正在使用跨域脚本。是的,允许访问源等在服务器上设置,这样就可以了。

1 个答案:

答案 0 :(得分:0)

如果有人偶然发现了这个问题。 IE8和IE9使用XDomainRequest(微软在ajax调用中自己处理响应)。使用SSL时,XDomainRequest仅在两个域都具有SSL时才有效。

此处有更详细的信息: https://blogs.msdn.microsoft.com/ieinternals/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds/