我有一个我无法控制的脚本,并且在另一个域中。默认程序是将其包含在脚本标记中,并且运行正常。
我不想默认运行它,所以我有一个if语句,如果是,我想运行脚本。 所以默认选项是:
<script src="http://domain/site/script?Id=12345&delayMs=2000&stayMs=10000&chance=0.1" type="text/javascript" ></script>
我教过我可以使用jQuery.getScript()来运行上面的url但这不起作用。我不知道所包含的实际脚本和函数的正确链接,因此我无法获取脚本和调用函数。
任何想法都会有所帮助。
此致 布赖恩
答案 0 :(得分:0)
由于您遇到跨域问题,请尝试此操作($.getScript()
只是一种简写,除了crossDomain: true
)。
$.ajax({
url: 'http://domain/site/script?Id=12345&delayMs=2000&
stayMs=10000&chance=0.1',
crossDomain: true,
dataType: 'script',
success: function () {
// script is loaded
},
error: function () {
// handle errors
}
});
您可以尝试使用纯JS的另一种解决方案:
function loadScript(src, callback)
{
var s,
r,
t;
r = false;
s = document.createElement('script');
s.type = 'text/javascript';
s.src = src;
s.onload = s.onreadystatechange = function() {
//console.log( this.readyState );
//uncomment this line to see which ready states are called.
if ( !r && (!this.readyState || this.readyState == 'complete') )
{
r = true;
callback();
}
};
t = document.getElementsByTagName('script')[0];
t.parent.insertBefore(s, t);
}
用法:
var url = 'http://domain/site/script?Id=12345&delayMs=2000&
stayMs=10000&chance=0.1';
loadScript(url, function(){
console.log('script loaded');
});